tor

The Tor anonymity network
git clone https://git.dasho.dev/tor.git
Log | Files | Refs | README | LICENSE

commit a63c5f844bcf022f6c83897d111b01344f67b40b
parent 33382184b67d43b859de2f50d24cc7955b9f0db7
Author: David Goulet <dgoulet@torproject.org>
Date:   Tue,  4 Jun 2019 09:57:03 -0400

Merge branch 'tor-github/pr/1067'

Diffstat:
Achanges/bug29875 | 11+++++++++++
Mscripts/maint/practracker/exceptions.txt | 4++--
Msrc/app/config/config.c | 3++-
Msrc/feature/client/entrynodes.c | 3+++
4 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/changes/bug29875 b/changes/bug29875 @@ -0,0 +1,11 @@ + o Major bugfixes (bridges): + - Do not count previously configured working bridges towards our total of + working bridges. Previously, when Tor's list of bridges changed, it + would think that the old bridges were still usable, and delay fetching + router descriptors for the new ones. Fixes part of bug 29875; bugfix + on 0.3.0.1-alpha. + - Consider our directory information to have changed when our list of + bridges changes. Previously, Tor would not re-compute the status of its + directory information when bridges changed, and therefore would not + realize that it was no longer able to build circuits. Fixes part of bug + 29875. diff --git a/scripts/maint/practracker/exceptions.txt b/scripts/maint/practracker/exceptions.txt @@ -32,7 +32,7 @@ problem file-size /src/app/config/config.c 8520 problem include-count /src/app/config/config.c 88 problem function-size /src/app/config/config.c:options_act_reversible() 296 -problem function-size /src/app/config/config.c:options_act() 588 +problem function-size /src/app/config/config.c:options_act() 590 problem function-size /src/app/config/config.c:resolve_my_address() 192 problem function-size /src/app/config/config.c:options_validate() 1220 problem function-size /src/app/config/config.c:options_init_from_torrc() 210 @@ -136,7 +136,7 @@ problem function-size /src/feature/client/addressmap.c:addressmap_rewrite() 112 problem function-size /src/feature/client/bridges.c:rewrite_node_address_for_bridge() 126 problem function-size /src/feature/client/circpathbias.c:pathbias_measure_close_rate() 108 problem function-size /src/feature/client/dnsserv.c:evdns_server_callback() 153 -problem file-size /src/feature/client/entrynodes.c 3817 +problem file-size /src/feature/client/entrynodes.c 3820 problem function-size /src/feature/client/entrynodes.c:entry_guards_upgrade_waiting_circuits() 153 problem function-size /src/feature/client/entrynodes.c:entry_guard_parse_from_state() 246 problem function-size /src/feature/client/transports.c:handle_proxy_line() 108 diff --git a/src/app/config/config.c b/src/app/config/config.c @@ -2387,7 +2387,8 @@ options_act(const or_options_t *old_options) if (!bool_eq(directory_fetches_dir_info_early(options), directory_fetches_dir_info_early(old_options)) || !bool_eq(directory_fetches_dir_info_later(options), - directory_fetches_dir_info_later(old_options))) { + directory_fetches_dir_info_later(old_options)) || + !config_lines_eq(old_options->Bridges, options->Bridges)) { /* Make sure update_router_have_minimum_dir_info() gets called. */ router_dir_info_changed(); /* We might need to download a new consensus status later or sooner than diff --git a/src/feature/client/entrynodes.c b/src/feature/client/entrynodes.c @@ -3300,6 +3300,9 @@ num_bridges_usable,(int use_maybe_reachable)) } SMARTLIST_FOREACH_BEGIN(gs->sampled_entry_guards, entry_guard_t *, guard) { + /* Not a bridge, or not one we are configured to be able to use. */ + if (! guard->is_filtered_guard) + continue; /* Definitely not usable */ if (guard->is_reachable == GUARD_REACHABLE_NO) continue;