diff options
author | Roger Dingledine <arma@torproject.org> | 2021-10-22 02:33:49 -0400 |
---|---|---|
committer | Roger Dingledine <arma@torproject.org> | 2021-10-28 20:57:28 -0400 |
commit | 3c8510e2c0b10637f4d2fdd81a6d0083968b7cc9 (patch) | |
tree | 5914e4839df4482141f90b2ebbcacbeff1f33689 /src | |
parent | 867c3c6f89ae67bb95cc3c714feb7898dd3c8e3b (diff) | |
download | tor-3c8510e2c0b10637f4d2fdd81a6d0083968b7cc9.tar.gz tor-3c8510e2c0b10637f4d2fdd81a6d0083968b7cc9.zip |
reassess minimum-dir-info when a bridge fails
When we try to fetch a bridge descriptor and we fail, we mark
the guard as failed, but we never scheduled a re-compute for
router_have_minimum_dir_info().
So if we had already decided we needed to wait for this new descriptor,
we would just wait forever -- even if, counterintuitively, *losing* the
bridge is just what we need to *resume* using the network, if we had it
in state GUARD_REACHABLE_MAYBE and we were stalling to learn this outcome.
See bug 40396 for more details.
Diffstat (limited to 'src')
-rw-r--r-- | src/feature/client/entrynodes.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/feature/client/entrynodes.c b/src/feature/client/entrynodes.c index 315bd54674..efc1c07763 100644 --- a/src/feature/client/entrynodes.c +++ b/src/feature/client/entrynodes.c @@ -2271,6 +2271,13 @@ entry_guards_note_guard_failure(guard_selection_t *gs, guard->is_primary?"primary ":"", guard->confirmed_idx>=0?"confirmed ":"", entry_guard_describe(guard)); + + /* Schedule a re-assessment of whether we have enough dir info to + * use the network. Counterintuitively, *losing* a bridge might actually + * be just what we need to *resume* using the network, if we had it in + * state GUARD_REACHABLE_MAYBE and we were stalling to learn this + * outcome. See bug 40396 for more details. */ + router_dir_info_changed(); } /** |