diff options
author | Christian Grothoff <christian@grothoff.org> | 2012-06-01 12:01:20 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2012-06-01 12:01:20 +0000 |
commit | 8dd4af4649e304dd4be8d4c6c984f3f5a9481643 (patch) | |
tree | fe83c367e9e4482b3c0d63a14aa38180314c652a /src | |
parent | 9c9ca63a3ec703c46e6de365599904a64abaa68d (diff) | |
download | gnunet-8dd4af4649e304dd4be8d4c6c984f3f5a9481643.tar.gz gnunet-8dd4af4649e304dd4be8d4c6c984f3f5a9481643.zip |
-fixing #2391
Diffstat (limited to 'src')
-rw-r--r-- | src/transport/gnunet-service-transport_neighbours.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/src/transport/gnunet-service-transport_neighbours.c b/src/transport/gnunet-service-transport_neighbours.c index 9636fff6e..c5801685a 100644 --- a/src/transport/gnunet-service-transport_neighbours.c +++ b/src/transport/gnunet-service-transport_neighbours.c | |||
@@ -2306,11 +2306,12 @@ master_task (void *cls, | |||
2306 | struct GNUNET_TIME_Relative delay; | 2306 | struct GNUNET_TIME_Relative delay; |
2307 | 2307 | ||
2308 | n->task = GNUNET_SCHEDULER_NO_TASK; | 2308 | n->task = GNUNET_SCHEDULER_NO_TASK; |
2309 | delay = GNUNET_TIME_absolute_get_remaining (n->timeout); | ||
2309 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 2310 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
2310 | "master task runs for neighbour `%s' in state %d\n", | 2311 | "master task runs for neighbour `%s' in state %d with timeout in %llu ms\n", |
2311 | GNUNET_i2s (&n->id), | 2312 | GNUNET_i2s (&n->id), |
2312 | n->state); | 2313 | n->state, |
2313 | delay = GNUNET_TIME_absolute_get_remaining (n->timeout); | 2314 | (unsigned long long) delay.rel_value); |
2314 | switch (n->state) | 2315 | switch (n->state) |
2315 | { | 2316 | { |
2316 | case S_NOT_CONNECTED: | 2317 | case S_NOT_CONNECTED: |
@@ -2465,8 +2466,16 @@ master_task (void *cls, | |||
2465 | GNUNET_break (0); | 2466 | GNUNET_break (0); |
2466 | break; | 2467 | break; |
2467 | } | 2468 | } |
2468 | delay = GNUNET_TIME_relative_min (GNUNET_TIME_absolute_get_remaining (n->keep_alive_time), | 2469 | if ( (S_CONNECTED_SWITCHING_CONNECT_SENT == n->state) || |
2469 | delay); | 2470 | (S_CONNECTED_SWITCHING_BLACKLIST == n->state) || |
2471 | (S_CONNECTED == n->state) ) | ||
2472 | { | ||
2473 | /* if we are *now* in one of these three states, we're sending | ||
2474 | keep alive messages, so we need to consider the keepalive | ||
2475 | delay, not just the connection timeout */ | ||
2476 | delay = GNUNET_TIME_relative_min (GNUNET_TIME_absolute_get_remaining (n->keep_alive_time), | ||
2477 | delay); | ||
2478 | } | ||
2470 | if (GNUNET_SCHEDULER_NO_TASK == n->task) | 2479 | if (GNUNET_SCHEDULER_NO_TASK == n->task) |
2471 | n->task = GNUNET_SCHEDULER_add_delayed (delay, | 2480 | n->task = GNUNET_SCHEDULER_add_delayed (delay, |
2472 | &master_task, | 2481 | &master_task, |