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

index 1ae67b02b81d630366e71e61e8e5874adcb249da..a55409e69dbd2351a7cb285075095e0a639a63ab 100644 (file)
@@ -63,6 +63,8 @@ static struct GNUNET_TIME_Absolute start_time;
 
 static GNUNET_SCHEDULER_TaskIdentifier err_task;
 
+static GNUNET_SCHEDULER_TaskIdentifier connect_task;
+
 
 struct PeerContext
 {
@@ -125,6 +127,8 @@ terminate_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
   p1.ch = NULL;
   GNUNET_CORE_disconnect (p2.ch);
   p2.ch = NULL;
+  if (connect_task != GNUNET_SCHEDULER_NO_TASK)
+    GNUNET_SCHEDULER_cancel (connect_task);
   GNUNET_TRANSPORT_disconnect (p1.th);
   p1.th = NULL;
   GNUNET_TRANSPORT_disconnect (p2.th);
@@ -152,6 +156,8 @@ terminate_task_error (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
     GNUNET_CORE_disconnect (p2.ch);
     p2.ch = NULL;
   }
+ if (connect_task != GNUNET_SCHEDULER_NO_TASK)
+    GNUNET_SCHEDULER_cancel (connect_task);
   if (p1.th != NULL)
   {
     GNUNET_TRANSPORT_get_hello_cancel (p1.ghh);
@@ -168,6 +174,14 @@ 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);
+}
+
 static size_t
 transmit_ready (void *cls, size_t size, void *buf)
 {
@@ -389,7 +403,7 @@ init_notify (void *cls, struct GNUNET_CORE_Handle *server,
     GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
                 "Asking transport (1) to connect to peer `%4s'\n",
                 GNUNET_i2s (&p2.id));
-    GNUNET_TRANSPORT_try_connect (p1.th, &p2.id);
+    connect_task = GNUNET_SCHEDULER_add_now (&try_connect, NULL);
   }
 }