Forráskód Böngészése

Merge branch 'tor-github/pr/1067'

David Goulet 5 éve
szülő
commit
a63c5f844b

+ 11 - 0
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.

+ 2 - 2
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

+ 2 - 1
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

+ 3 - 0
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;