[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r17663 - gnunet/src/fragmentation
From: |
gnunet |
Subject: |
[GNUnet-SVN] r17663 - gnunet/src/fragmentation |
Date: |
Fri, 21 Oct 2011 20:44:26 +0200 |
Author: grothoff
Date: 2011-10-21 20:44:26 +0200 (Fri, 21 Oct 2011)
New Revision: 17663
Modified:
gnunet/src/fragmentation/test_fragmentation.c
Log:
fix segfault introduced by recent refactoring
Modified: gnunet/src/fragmentation/test_fragmentation.c
===================================================================
--- gnunet/src/fragmentation/test_fragmentation.c 2011-10-21 15:55:33 UTC
(rev 17662)
+++ gnunet/src/fragmentation/test_fragmentation.c 2011-10-21 18:44:26 UTC
(rev 17663)
@@ -62,7 +62,29 @@
static struct GNUNET_FRAGMENT_Context *frags[NUM_MSGS];
+static GNUNET_SCHEDULER_TaskIdentifier shutdown_task;
+
static void
+do_shutdown (void *cls,
+ const struct GNUNET_SCHEDULER_TaskContext *tc)
+{
+ unsigned int i;
+
+ ret = 0;
+ shutdown_task = GNUNET_SCHEDULER_NO_TASK;
+ GNUNET_DEFRAGMENT_context_destroy (defrag);
+ defrag = NULL;
+ for (i = 0; i < NUM_MSGS; i++)
+ {
+ if (frags[i] == NULL)
+ continue;
+ GNUNET_FRAGMENT_context_destroy (frags[i]);
+ frags[i] = NULL;
+ }
+}
+
+
+static void
proc_msgs (void *cls, const struct GNUNET_MessageHeader *hdr)
{
static unsigned int total;
@@ -81,18 +103,11 @@
fprintf (stderr, ".");
#endif
/* tolerate 10% loss, i.e. due to duplicate fragment IDs */
- if (total >= NUM_MSGS - (NUM_MSGS / 10))
+ if ( (total >= NUM_MSGS - (NUM_MSGS / 10)) &&
+ (ret != 0) )
{
- ret = 0;
- GNUNET_DEFRAGMENT_context_destroy (defrag);
- defrag = NULL;
- for (i = 0; i < NUM_MSGS; i++)
- {
- if (frags[i] == NULL)
- continue;
- GNUNET_FRAGMENT_context_destroy (frags[i]);
- frags[i] = NULL;
- }
+ if (GNUNET_SCHEDULER_NO_TASK == shutdown_task)
+ shutdown_task = GNUNET_SCHEDULER_add_now (&do_shutdown, NULL);
}
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r17663 - gnunet/src/fragmentation,
gnunet <=