try to connect more than just once
authorChristian Grothoff <christian@grothoff.org>
Mon, 17 Oct 2011 11:12:21 +0000 (11:12 +0000)
committerChristian Grothoff <christian@grothoff.org>
Mon, 17 Oct 2011 11:12:21 +0000 (11:12 +0000)
src/core/test_core_quota_compliance.c

index 3f619f49af2a2d61a5a2e3ca0510ee62f382e8a9..c543f09cdc8b279f337a36d822efdbe59330142a 100644 (file)
@@ -72,6 +72,8 @@ static GNUNET_SCHEDULER_TaskIdentifier err_task;
 
 static GNUNET_SCHEDULER_TaskIdentifier measure_task;
 
+static GNUNET_SCHEDULER_TaskIdentifier connect_task;
+
 
 struct PeerContext
 {
@@ -132,6 +134,8 @@ terminate_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
     GNUNET_CORE_notify_transmit_ready_cancel (p1.nth);
     p1.nth = NULL;
   }
+  if (connect_task != GNUNET_SCHEDULER_NO_TASK)
+    GNUNET_SCHEDULER_cancel (connect_task);
   ch = p1.ch;
   p1.ch = NULL;
   GNUNET_CORE_disconnect (ch);
@@ -160,6 +164,8 @@ terminate_task_error (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
   }
   if (measure_task != GNUNET_SCHEDULER_NO_TASK)
     GNUNET_SCHEDULER_cancel (measure_task);
+  if (connect_task != GNUNET_SCHEDULER_NO_TASK)
+    GNUNET_SCHEDULER_cancel (connect_task);
 
   GNUNET_TRANSPORT_get_hello_cancel (p1.ghh);
   GNUNET_TRANSPORT_get_hello_cancel (p2.ghh);
@@ -176,6 +182,15 @@ terminate_task_error (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
 }
 
 
+static void
+try_connect (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
+{
+  connect_task = GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS,
+                                              &try_connect, NULL);
+  GNUNET_TRANSPORT_try_connect (p1.th, &p2.id);
+  GNUNET_TRANSPORT_try_connect (p2.th, &p1.id);
+}
+
 /**
  * Callback function to process statistic values.
  *
@@ -533,8 +548,8 @@ init_notify (void *cls, struct GNUNET_CORE_Handle *server,
                 "Asking core (1) to connect to peer `%4s'\n",
                 GNUNET_i2s (&p2.id));
 #endif
-    GNUNET_TRANSPORT_try_connect (p1.th, &p2.id);
-    GNUNET_TRANSPORT_try_connect (p2.th, &p1.id);
+    connect_task = GNUNET_SCHEDULER_add_now (&try_connect,
+                                            NULL);
   }
 }