From: Christian Grothoff Date: Mon, 17 Oct 2011 11:15:09 +0000 (+0000) Subject: try to connect more than just once X-Git-Tag: initial-import-from-subversion-38251~16476 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=19ce2475eadcc6f140a0da73d7afe272aab3e109;p=oweals%2Fgnunet.git try to connect more than just once --- diff --git a/src/core/test_core_api_reliability.c b/src/core/test_core_api_reliability.c index 1ae67b02b..a55409e69 100644 --- a/src/core/test_core_api_reliability.c +++ b/src/core/test_core_api_reliability.c @@ -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); } }