mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-30 23:53:32 +01:00
Cap the circuit build timeout to the max time we've seen.
Also, cap the measurement timeout to 2X the max we've seen.
This commit is contained in:
parent
11910cf5b3
commit
4324bb1b21
@ -1204,6 +1204,7 @@ circuit_build_times_count_timeout(circuit_build_times_t *cbt,
|
||||
static int
|
||||
circuit_build_times_set_timeout_worker(circuit_build_times_t *cbt)
|
||||
{
|
||||
build_time_t max_time;
|
||||
if (cbt->total_build_times < circuit_build_times_min_circs_to_observe()) {
|
||||
return 0;
|
||||
}
|
||||
@ -1217,11 +1218,29 @@ circuit_build_times_set_timeout_worker(circuit_build_times_t *cbt)
|
||||
cbt->close_ms = circuit_build_times_calculate_timeout(cbt,
|
||||
circuit_build_times_close_quantile());
|
||||
|
||||
max_time = circuit_build_times_max(cbt);
|
||||
|
||||
/* Sometimes really fast guard nodes give us such a steep curve
|
||||
* that this ends up being not that much greater than timeout_ms.
|
||||
* Make it be at least 1 min to handle this case. */
|
||||
cbt->close_ms = MAX(cbt->close_ms, circuit_build_times_initial_timeout());
|
||||
|
||||
if (cbt->timeout_ms > max_time) {
|
||||
log_notice(LD_CIRC,
|
||||
"Circuit build timeout of %dms is beyond the maximum build "
|
||||
"time we have ever observed. Capping it to %dms.",
|
||||
(int)cbt->timeout_ms, max_time);
|
||||
cbt->timeout_ms = max_time;
|
||||
}
|
||||
|
||||
if (max_time < INT32_MAX/2 && cbt->close_ms > 2*max_time) {
|
||||
log_notice(LD_CIRC,
|
||||
"Circuit build measurement period of %dms is more than twice "
|
||||
"the maximum build time we have ever observed. Capping it to "
|
||||
"%dms.", (int)cbt->close_ms, 2*max_time);
|
||||
cbt->close_ms = 2*max_time;
|
||||
}
|
||||
|
||||
cbt->have_computed_timeout = 1;
|
||||
return 1;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user