diff options
author | Christian Grothoff <christian@grothoff.org> | 2015-02-09 12:17:18 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2015-02-09 12:17:18 +0000 |
commit | 5b23ce75b0196174e5ea189314a0e7301e5c388b (patch) | |
tree | 0695dc711df3bd67abcb9d245f6966e0d74ea1e1 | |
parent | 16b3d36a08d5159a6d662b81146943060d08a149 (diff) | |
download | gnunet-5b23ce75b0196174e5ea189314a0e7301e5c388b.tar.gz gnunet-5b23ce75b0196174e5ea189314a0e7301e5c388b.zip |
-use backoff for reconnects
-rw-r--r-- | src/ats/ats_api_connectivity.c | 7 | ||||
-rw-r--r-- | src/ats/ats_api_performance.c | 14 | ||||
-rw-r--r-- | src/ats/ats_api_scheduling.c | 9 |
3 files changed, 25 insertions, 5 deletions
diff --git a/src/ats/ats_api_connectivity.c b/src/ats/ats_api_connectivity.c index f20743dc2..432f1ca35 100644 --- a/src/ats/ats_api_connectivity.c +++ b/src/ats/ats_api_connectivity.c | |||
@@ -78,6 +78,10 @@ struct GNUNET_ATS_ConnectivityHandle | |||
78 | */ | 78 | */ |
79 | struct GNUNET_SCHEDULER_Task *task; | 79 | struct GNUNET_SCHEDULER_Task *task; |
80 | 80 | ||
81 | /** | ||
82 | * Reconnect backoff delay. | ||
83 | */ | ||
84 | struct GNUNET_TIME_Relative backoff; | ||
81 | }; | 85 | }; |
82 | 86 | ||
83 | 87 | ||
@@ -125,7 +129,8 @@ force_reconnect (struct GNUNET_ATS_ConnectivityHandle *ch) | |||
125 | GNUNET_CLIENT_disconnect (ch->client); | 129 | GNUNET_CLIENT_disconnect (ch->client); |
126 | ch->client = NULL; | 130 | ch->client = NULL; |
127 | } | 131 | } |
128 | ch->task = GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS, | 132 | ch->backoff = GNUNET_TIME_STD_BACKOFF (ch->backoff); |
133 | ch->task = GNUNET_SCHEDULER_add_delayed (ch->backoff, | ||
129 | &reconnect_task, | 134 | &reconnect_task, |
130 | ch); | 135 | ch); |
131 | } | 136 | } |
diff --git a/src/ats/ats_api_performance.c b/src/ats/ats_api_performance.c index 19e769bd3..e81f0d394 100644 --- a/src/ats/ats_api_performance.c +++ b/src/ats/ats_api_performance.c | |||
@@ -221,7 +221,12 @@ struct GNUNET_ATS_PerformanceHandle | |||
221 | /** | 221 | /** |
222 | * Task to trigger reconnect. | 222 | * Task to trigger reconnect. |
223 | */ | 223 | */ |
224 | struct GNUNET_SCHEDULER_Task * task; | 224 | struct GNUNET_SCHEDULER_Task *task; |
225 | |||
226 | /** | ||
227 | * Reconnect backoff delay. | ||
228 | */ | ||
229 | struct GNUNET_TIME_Relative backoff; | ||
225 | 230 | ||
226 | /** | 231 | /** |
227 | * Monitor request multiplexing | 232 | * Monitor request multiplexing |
@@ -609,6 +614,7 @@ process_ats_message (void *cls, | |||
609 | GNUNET_break(0); | 614 | GNUNET_break(0); |
610 | goto reconnect; | 615 | goto reconnect; |
611 | } | 616 | } |
617 | ph->backoff = GNUNET_TIME_UNIT_ZERO; | ||
612 | GNUNET_CLIENT_receive (ph->client, | 618 | GNUNET_CLIENT_receive (ph->client, |
613 | &process_ats_message, | 619 | &process_ats_message, |
614 | ph, | 620 | ph, |
@@ -635,8 +641,10 @@ process_ats_message (void *cls, | |||
635 | GNUNET_BANDWIDTH_value_init (0), | 641 | GNUNET_BANDWIDTH_value_init (0), |
636 | NULL, 0); | 642 | NULL, 0); |
637 | } | 643 | } |
638 | ph->task = GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS, | 644 | ph->backoff = GNUNET_TIME_STD_BACKOFF (ph->backoff); |
639 | &reconnect_task, ph); | 645 | ph->task = GNUNET_SCHEDULER_add_delayed (ph->backoff, |
646 | &reconnect_task, | ||
647 | ph); | ||
640 | } | 648 | } |
641 | 649 | ||
642 | 650 | ||
diff --git a/src/ats/ats_api_scheduling.c b/src/ats/ats_api_scheduling.c index 1ed89e86e..fb6df4494 100644 --- a/src/ats/ats_api_scheduling.c +++ b/src/ats/ats_api_scheduling.c | |||
@@ -145,6 +145,11 @@ struct GNUNET_ATS_SchedulingHandle | |||
145 | struct GNUNET_SCHEDULER_Task *task; | 145 | struct GNUNET_SCHEDULER_Task *task; |
146 | 146 | ||
147 | /** | 147 | /** |
148 | * Reconnect backoff delay. | ||
149 | */ | ||
150 | struct GNUNET_TIME_Relative backoff; | ||
151 | |||
152 | /** | ||
148 | * Size of the @e session_array. | 153 | * Size of the @e session_array. |
149 | */ | 154 | */ |
150 | unsigned int session_array_size; | 155 | unsigned int session_array_size; |
@@ -200,7 +205,8 @@ force_reconnect (struct GNUNET_ATS_SchedulingHandle *sh) | |||
200 | NULL, NULL, NULL, | 205 | NULL, NULL, NULL, |
201 | GNUNET_BANDWIDTH_ZERO, | 206 | GNUNET_BANDWIDTH_ZERO, |
202 | GNUNET_BANDWIDTH_ZERO); | 207 | GNUNET_BANDWIDTH_ZERO); |
203 | sh->task = GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS, | 208 | sh->backoff = GNUNET_TIME_STD_BACKOFF (sh->backoff); |
209 | sh->task = GNUNET_SCHEDULER_add_delayed (sh->backoff, | ||
204 | &reconnect_task, | 210 | &reconnect_task, |
205 | sh); | 211 | sh); |
206 | } | 212 | } |
@@ -432,6 +438,7 @@ process_ats_address_suggestion_message (void *cls, | |||
432 | GNUNET_break (0); | 438 | GNUNET_break (0); |
433 | return; | 439 | return; |
434 | } | 440 | } |
441 | sh->backoff = GNUNET_TIME_UNIT_ZERO; | ||
435 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 442 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
436 | "ATS suggests address slot %u for peer `%s' using plugin %s\n", | 443 | "ATS suggests address slot %u for peer `%s' using plugin %s\n", |
437 | ar->slot, | 444 | ar->slot, |