gnunet-svn
[Top][All Lists]
Advanced

[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);
   }
 }
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]