summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--changes/bug2987511
-rw-r--r--scripts/maint/practracker/exceptions.txt4
-rw-r--r--src/app/config/config.c3
-rw-r--r--src/feature/client/entrynodes.c3
4 files changed, 18 insertions, 3 deletions
diff --git a/changes/bug29875 b/changes/bug29875
new file mode 100644
index 0000000000..58a1c871cd
--- /dev/null
+++ 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
index 3a32e97beb..f0c176560b 100644
--- 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
index d03305627b..d1b9d06bb3 100644
--- 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
index e59f8b34e0..4afcee2021 100644
--- 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;