mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2025-02-24 22:58:50 +01:00
Better handling (I think) for onionskin timing w jumpy clocks
The fix: Instead of clipping huge/negative times, ignore them as probably invalid.
This commit is contained in:
parent
30e139389b
commit
677d18278e
1 changed files with 12 additions and 13 deletions
|
@ -320,19 +320,18 @@ connection_cpu_process_inbuf(connection_t *conn)
|
|||
tor_gettimeofday(&tv_end);
|
||||
timersub(&tv_end, &rpl.started_at, &tv_diff);
|
||||
usec_roundtrip = ((int64_t)tv_diff.tv_sec)*1000000 + tv_diff.tv_usec;
|
||||
if (usec_roundtrip < 0 ||
|
||||
usec_roundtrip > MAX_BELIEVABLE_ONIONSKIN_DELAY) {
|
||||
usec_roundtrip = MAX_BELIEVABLE_ONIONSKIN_DELAY;
|
||||
}
|
||||
++onionskins_n_processed[rpl.handshake_type];
|
||||
onionskins_usec_internal[rpl.handshake_type] += rpl.n_usec;
|
||||
onionskins_usec_roundtrip[rpl.handshake_type] += usec_roundtrip;
|
||||
if (onionskins_n_processed[rpl.handshake_type] >= 500000) {
|
||||
/* Scale down every 500000 handshakes. On a busy server, that's
|
||||
* less impressive than it sounds. */
|
||||
onionskins_n_processed[rpl.handshake_type] /= 2;
|
||||
onionskins_usec_internal[rpl.handshake_type] /= 2;
|
||||
onionskins_usec_roundtrip[rpl.handshake_type] /= 2;
|
||||
if (usec_roundtrip >= 0 &&
|
||||
usec_roundtrip < MAX_BELIEVABLE_ONIONSKIN_DELAY) {
|
||||
++onionskins_n_processed[rpl.handshake_type];
|
||||
onionskins_usec_internal[rpl.handshake_type] += rpl.n_usec;
|
||||
onionskins_usec_roundtrip[rpl.handshake_type] += usec_roundtrip;
|
||||
if (onionskins_n_processed[rpl.handshake_type] >= 500000) {
|
||||
/* Scale down every 500000 handshakes. On a busy server, that's
|
||||
* less impressive than it sounds. */
|
||||
onionskins_n_processed[rpl.handshake_type] /= 2;
|
||||
onionskins_usec_internal[rpl.handshake_type] /= 2;
|
||||
onionskins_usec_roundtrip[rpl.handshake_type] /= 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
/* parse out the circ it was talking about */
|
||||
|
|
Loading…
Add table
Reference in a new issue