diff options
author | Roger Dingledine <arma@torproject.org> | 2015-02-09 01:05:31 -0500 |
---|---|---|
committer | Roger Dingledine <arma@torproject.org> | 2015-02-09 01:05:31 -0500 |
commit | 56061976dbe148dc615c8072c962ddfc0d719585 (patch) | |
tree | b6c48264147ad92838473212fc1811f038670e1e /src/or/circuitbuild.c | |
parent | 1cb9064d7d0f1b08d9595a42b80867118a26646a (diff) | |
download | tor-56061976dbe148dc615c8072c962ddfc0d719585.tar.gz tor-56061976dbe148dc615c8072c962ddfc0d719585.zip |
Recover better when our clock jumps back many hours
like might happen for Tails or Whonix users who start with a very wrong
hardware clock, use Tor to discover a more accurate time, and then
fix their clock.
Resolves part of ticket 8766.
(There are still some timers in various places that aren't addressed yet.)
Diffstat (limited to 'src/or/circuitbuild.c')
-rw-r--r-- | src/or/circuitbuild.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c index fa5a2f5242..fa9ac5668d 100644 --- a/src/or/circuitbuild.c +++ b/src/or/circuitbuild.c @@ -1049,6 +1049,10 @@ circuit_note_clock_jumped(int seconds_elapsed) "CLOCK_JUMPED"); circuit_mark_all_unused_circs(); circuit_mark_all_dirty_circs_as_unusable(); + if (seconds_elapsed < 0) { + /* Restart all the timers in case we jumped a long way into the past. */ + reset_all_main_loop_timers(); + } } /** Take the 'extend' <b>cell</b>, pull out addr/port plus the onion |