diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c index 03b702bed99520f9f55528f4cc1a7566cfd23856..4f46022f4c464bdf6809db538ee1d4b693f877f9 100644 --- a/src/or/circuitbuild.c +++ b/src/or/circuitbuild.c @@ -493,12 +493,7 @@ circuit_build_times_new_consensus_params(circuit_build_times_t *cbt, "This disables adaptive timeouts since we can't keep track of " "any recent circuits."); - if (cbt->liveness.timeouts_after_firsthop) { - tor_free(cbt->liveness.timeouts_after_firsthop); - cbt->liveness.timeouts_after_firsthop = NULL; - } - - cbt->liveness.num_recent_circs = num; + circuit_build_times_free_timeouts(cbt); } } else { /* @@ -509,12 +504,7 @@ circuit_build_times_new_consensus_params(circuit_build_times_t *cbt, * if we have any. */ - if (cbt->liveness.timeouts_after_firsthop) { - tor_free(cbt->liveness.timeouts_after_firsthop); - cbt->liveness.timeouts_after_firsthop = NULL; - } - - cbt->liveness.num_recent_circs = 0; + circuit_build_times_free_timeouts(cbt); } } @@ -598,6 +588,21 @@ circuit_build_times_init(circuit_build_times_t *cbt) control_event_buildtimeout_set(cbt, BUILDTIMEOUT_SET_EVENT_RESET); } +/** + * Free the saved timeouts, if the cbtdisabled consensus parameter got turned + * on or something. + */ + +void circuit_build_times_free_timeouts(circuit_build_times_t *cbt) { + if (!cbt) return; + + if (cbt->liveness.timeouts_after_firsthop) { + tor_free(cbt->liveness.timeouts_after_firsthop); + } + + cbt->liveness.num_recent_circs = 0; +} + #if 0 /** * Rewind our build time history by n positions. diff --git a/src/or/circuitbuild.h b/src/or/circuitbuild.h index 5b773990308934079712981c1b863abcd1bc3a2f..92811783d31cdf267cae5257a4dfb43b8ae4cd3f 100644 --- a/src/or/circuitbuild.h +++ b/src/or/circuitbuild.h @@ -121,6 +121,7 @@ int circuit_build_times_needs_circuits(circuit_build_times_t *cbt); int circuit_build_times_needs_circuits_now(circuit_build_times_t *cbt); void circuit_build_times_init(circuit_build_times_t *cbt); +void circuit_build_times_free_timeouts(circuit_build_times_t *cbt); void circuit_build_times_new_consensus_params(circuit_build_times_t *cbt, networkstatus_t *ns); double circuit_build_times_timeout_rate(const circuit_build_times_t *cbt);