mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-28 14:23:30 +01:00
Bug 29085: Avoid monotime usage for rtt estimates if it is not in use.
This commit is contained in:
parent
5c2d2b5d11
commit
14ec8b89f8
@ -1548,9 +1548,25 @@ circpad_estimate_circ_rtt_on_received(circuit_t *circ,
|
|||||||
circ->n_chan ? circ->n_chan->global_identifier : 0,
|
circ->n_chan ? circ->n_chan->global_identifier : 0,
|
||||||
circ->n_circ_id, mi->rtt_estimate_usec);
|
circ->n_circ_id, mi->rtt_estimate_usec);
|
||||||
mi->stop_rtt_update = 1;
|
mi->stop_rtt_update = 1;
|
||||||
|
|
||||||
|
if (!mi->rtt_estimate_usec) {
|
||||||
|
static ratelim_t rtt_lim = RATELIM_INIT(600);
|
||||||
|
log_fn_ratelim(&rtt_lim,LOG_NOTICE,LD_BUG,
|
||||||
|
"Circuit got two cells back to back before estimating RTT.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
const circpad_state_t *state = circpad_machine_current_state(mi);
|
||||||
|
|
||||||
|
/* Since monotime is unpredictably expensive, only update this field
|
||||||
|
* if rtt estimates are needed. Otherwise, stop the rtt update. */
|
||||||
|
if (state->use_rtt_estimate) {
|
||||||
mi->last_received_time_usec = monotime_absolute_usec();
|
mi->last_received_time_usec = monotime_absolute_usec();
|
||||||
|
} else {
|
||||||
|
/* Let's fast-path future decisions not to update rtt if the
|
||||||
|
* feature is not in use. */
|
||||||
|
mi->stop_rtt_update = 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1610,8 +1626,9 @@ circpad_estimate_circ_rtt_on_send(circuit_t *circ,
|
|||||||
mi->stop_rtt_update = 1;
|
mi->stop_rtt_update = 1;
|
||||||
|
|
||||||
if (!mi->rtt_estimate_usec) {
|
if (!mi->rtt_estimate_usec) {
|
||||||
log_fn(LOG_NOTICE, LD_CIRC,
|
static ratelim_t rtt_lim = RATELIM_INIT(600);
|
||||||
"Got two cells back to back on a circuit before estimating RTT.");
|
log_fn_ratelim(&rtt_lim,LOG_NOTICE,LD_BUG,
|
||||||
|
"Circuit sent two cells back to back before estimating RTT.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -415,6 +415,7 @@ helper_create_basic_machine(void)
|
|||||||
|
|
||||||
circ_client_machine.states[CIRCPAD_STATE_START].
|
circ_client_machine.states[CIRCPAD_STATE_START].
|
||||||
next_state[CIRCPAD_EVENT_NONPADDING_RECV] = CIRCPAD_STATE_BURST;
|
next_state[CIRCPAD_EVENT_NONPADDING_RECV] = CIRCPAD_STATE_BURST;
|
||||||
|
circ_client_machine.states[CIRCPAD_STATE_START].use_rtt_estimate = 1;
|
||||||
|
|
||||||
circ_client_machine.states[CIRCPAD_STATE_BURST].
|
circ_client_machine.states[CIRCPAD_STATE_BURST].
|
||||||
next_state[CIRCPAD_EVENT_PADDING_RECV] = CIRCPAD_STATE_BURST;
|
next_state[CIRCPAD_EVENT_PADDING_RECV] = CIRCPAD_STATE_BURST;
|
||||||
|
Loading…
Reference in New Issue
Block a user