diff options
author | Christian Grothoff <christian@grothoff.org> | 2011-10-17 11:15:09 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2011-10-17 11:15:09 +0000 |
commit | 19ce2475eadcc6f140a0da73d7afe272aab3e109 (patch) | |
tree | 5dceacf0c62006d08a9acbbf29b89803106895d6 /src/core | |
parent | 8c89248aa6ab5db7d0f88d95bfc151635d3f8b52 (diff) | |
download | gnunet-19ce2475eadcc6f140a0da73d7afe272aab3e109.tar.gz gnunet-19ce2475eadcc6f140a0da73d7afe272aab3e109.zip |
try to connect more than just once
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/test_core_api_reliability.c | 16 |
1 files changed, 15 insertions, 1 deletions
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; | |||
63 | 63 | ||
64 | static GNUNET_SCHEDULER_TaskIdentifier err_task; | 64 | static GNUNET_SCHEDULER_TaskIdentifier err_task; |
65 | 65 | ||
66 | static GNUNET_SCHEDULER_TaskIdentifier connect_task; | ||
67 | |||
66 | 68 | ||
67 | struct PeerContext | 69 | struct PeerContext |
68 | { | 70 | { |
@@ -125,6 +127,8 @@ terminate_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
125 | p1.ch = NULL; | 127 | p1.ch = NULL; |
126 | GNUNET_CORE_disconnect (p2.ch); | 128 | GNUNET_CORE_disconnect (p2.ch); |
127 | p2.ch = NULL; | 129 | p2.ch = NULL; |
130 | if (connect_task != GNUNET_SCHEDULER_NO_TASK) | ||
131 | GNUNET_SCHEDULER_cancel (connect_task); | ||
128 | GNUNET_TRANSPORT_disconnect (p1.th); | 132 | GNUNET_TRANSPORT_disconnect (p1.th); |
129 | p1.th = NULL; | 133 | p1.th = NULL; |
130 | GNUNET_TRANSPORT_disconnect (p2.th); | 134 | GNUNET_TRANSPORT_disconnect (p2.th); |
@@ -152,6 +156,8 @@ terminate_task_error (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
152 | GNUNET_CORE_disconnect (p2.ch); | 156 | GNUNET_CORE_disconnect (p2.ch); |
153 | p2.ch = NULL; | 157 | p2.ch = NULL; |
154 | } | 158 | } |
159 | if (connect_task != GNUNET_SCHEDULER_NO_TASK) | ||
160 | GNUNET_SCHEDULER_cancel (connect_task); | ||
155 | if (p1.th != NULL) | 161 | if (p1.th != NULL) |
156 | { | 162 | { |
157 | GNUNET_TRANSPORT_get_hello_cancel (p1.ghh); | 163 | GNUNET_TRANSPORT_get_hello_cancel (p1.ghh); |
@@ -168,6 +174,14 @@ terminate_task_error (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
168 | } | 174 | } |
169 | 175 | ||
170 | 176 | ||
177 | static void | ||
178 | try_connect (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | ||
179 | { | ||
180 | connect_task = GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS, | ||
181 | &try_connect, NULL); | ||
182 | GNUNET_TRANSPORT_try_connect (p1.th, &p2.id); | ||
183 | } | ||
184 | |||
171 | static size_t | 185 | static size_t |
172 | transmit_ready (void *cls, size_t size, void *buf) | 186 | transmit_ready (void *cls, size_t size, void *buf) |
173 | { | 187 | { |
@@ -389,7 +403,7 @@ init_notify (void *cls, struct GNUNET_CORE_Handle *server, | |||
389 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 403 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
390 | "Asking transport (1) to connect to peer `%4s'\n", | 404 | "Asking transport (1) to connect to peer `%4s'\n", |
391 | GNUNET_i2s (&p2.id)); | 405 | GNUNET_i2s (&p2.id)); |
392 | GNUNET_TRANSPORT_try_connect (p1.th, &p2.id); | 406 | connect_task = GNUNET_SCHEDULER_add_now (&try_connect, NULL); |
393 | } | 407 | } |
394 | } | 408 | } |
395 | 409 | ||