gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r18335 - gnunet/src/testing


From: gnunet
Subject: [GNUnet-SVN] r18335 - gnunet/src/testing
Date: Sat, 26 Nov 2011 14:52:44 +0100

Author: grothoff
Date: 2011-11-26 14:52:44 +0100 (Sat, 26 Nov 2011)
New Revision: 18335

Modified:
   gnunet/src/testing/testing_group.c
Log:
LRN:  Fix dht multipeer testing crash - #1919

Modified: gnunet/src/testing/testing_group.c
===================================================================
--- gnunet/src/testing/testing_group.c  2011-11-26 13:52:09 UTC (rev 18334)
+++ gnunet/src/testing/testing_group.c  2011-11-26 13:52:44 UTC (rev 18335)
@@ -550,6 +550,12 @@
    * stagger hostkey generation and peer startup.
    */
   struct InternalStartContext internal_context;
+
+  /**
+   * Task ID for the queued internal_continue_startup task
+   */
+  GNUNET_SCHEDULER_TaskIdentifier startup_task;
+
 };
 
 /**
@@ -5557,6 +5563,7 @@
                            const struct GNUNET_SCHEDULER_TaskContext *tc)
 {
   struct InternalStartContext *internal_context = cls;
+  internal_context->peer->startup_task = GNUNET_SCHEDULER_NO_TASK;
 
   if ((tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN) != 0)
   {
@@ -5579,7 +5586,7 @@
   }
   else
   {
-    GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply
+    internal_context->peer->startup_task = GNUNET_SCHEDULER_add_delayed 
(GNUNET_TIME_relative_multiply
                                   (GNUNET_TIME_UNIT_MILLISECONDS, 100),
                                   &internal_continue_startup, 
internal_context);
   }
@@ -5887,7 +5894,7 @@
     pg->starting = 0;
     for (i = 0; i < pg->total; i++)
     {
-      GNUNET_SCHEDULER_add_now (&internal_continue_startup,
+      pg->peers[i].startup_task = GNUNET_SCHEDULER_add_now 
(&internal_continue_startup,
                                 &pg->peers[i].internal_context);
     }
   }
@@ -5895,7 +5902,7 @@
   pg->starting = 0;
   for (i = 0; i < pg->total; i++)
   {
-    GNUNET_SCHEDULER_add_now (&internal_continue_startup,
+    pg->peers[i].startup_task = GNUNET_SCHEDULER_add_now 
(&internal_continue_startup,
                               &pg->peers[i].internal_context);
   }
 #endif
@@ -6903,6 +6910,7 @@
   struct PeerShutdownContext *peer_shutdown_ctx = cls;
   struct ShutdownContext *shutdown_ctx = peer_shutdown_ctx->shutdown_ctx;
   unsigned int off;
+  int i;
   struct OutstandingSSH *ssh_pos;
 
   shutdown_ctx->outstanding--;
@@ -6933,6 +6941,11 @@
     else
       shutdown_ctx->cb (shutdown_ctx->cb_cls, NULL);
 
+    for (i = 0; i < shutdown_ctx->pg->total; i++)
+    {
+      if (shutdown_ctx->pg->peers[i].startup_task != GNUNET_SCHEDULER_NO_TASK)
+        GNUNET_SCHEDULER_cancel (shutdown_ctx->pg->peers[i].startup_task);
+    }
     GNUNET_free (shutdown_ctx->pg->peers);
     GNUNET_free_non_null (shutdown_ctx->pg->hostkey_data);
     for (off = 0; off < shutdown_ctx->pg->num_hosts; off++)




reply via email to

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