From 0a6191cf701617d51d30c468b5987b62ad75883c Mon Sep 17 00:00:00 2001 From: Mike Perry Date: Sat, 8 May 2010 10:41:00 -0700 Subject: [PATCH] Bug 1357: Store the suspended timeout value to resume. This prevents a spurious warning where we have a timeout just after deciding our network came back online. --- src/or/circuitbuild.c | 7 ++++--- src/or/or.h | 5 +++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c index 0840e304f1..3600ce7c4d 100644 --- a/src/or/circuitbuild.c +++ b/src/or/circuitbuild.c @@ -922,17 +922,18 @@ circuit_build_times_network_check_live(circuit_build_times_t *cbt) "Temporarily raising timeout to %lds.", (long int)(now - cbt->liveness.network_last_live), tor_lround(circuit_build_times_get_initial_timeout()/1000)); + cbt->liveness.suspended_timeout = cbt->timeout_ms; cbt->timeout_ms = circuit_build_times_get_initial_timeout(); - cbt->liveness.net_suspended = 1; control_event_buildtimeout_set(cbt, BUILDTIMEOUT_SET_EVENT_SUSPENDED); } return 0; - } else if (cbt->liveness.net_suspended) { + } else if (cbt->liveness.suspended_timeout) { log_notice(LD_CIRC, "Network activity has resumed. " "Resuming circuit timeout calculations."); - cbt->liveness.net_suspended = 0; + cbt->timeout_ms = cbt->liveness.suspended_timeout; + cbt->liveness.suspended_timeout = 0; control_event_buildtimeout_set(cbt, BUILDTIMEOUT_SET_EVENT_RESUME); } diff --git a/src/or/or.h b/src/or/or.h index c8886cff1e..f31847408e 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -3108,8 +3108,9 @@ typedef struct { int num_recent_circs; /** Index into circular array. */ int after_firsthop_idx; - /** The network is not live. Timeout gathering is suspended */ - int net_suspended; + /** Timeout gathering is suspended if non-zero. The old timeout value + * is stored here in that case. */ + build_time_t suspended_timeout; } network_liveness_t; /** Structure for circuit build times history */ -- 2.47.3