[tor-commits] [tor/master] Fix max sampled size logic when in bridge mode.

nickm at torproject.org nickm at torproject.org
Mon Mar 27 13:44:36 UTC 2017

commit ef4c10fb42e796a7a1662b5f1db27d10347e89af
Author: George Kadianakis <desnacked at riseup.net>
Date:   Mon Mar 27 15:08:18 2017 +0200

    Fix max sampled size logic when in bridge mode.
    When calculating max sampled size, Tor would only count the number of
    bridges in torrc, without considering that our state file might already
    have sampled bridges in it. This caused problems when people swap
    bridges, since the following error would trigger:
             [warn] Not expanding the guard sample any further; just hit the
                    maximum sample threshold of 1
 changes/bug21771    | 5 +++++
 src/or/entrynodes.c | 6 ++++--
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/changes/bug21771 b/changes/bug21771
new file mode 100644
index 0000000..f814c75
--- /dev/null
+++ b/changes/bug21771
@@ -0,0 +1,5 @@
+  o Minor bugfixes (guard selection):
+    - Fix a guard selection bug where Tor would refuse to bootstrap in some
+      cases if the user swapped a bridge for another bridge in their
+      configuration file.
+      Fixes bug 21771; bugfix on Reported by "torvlnt33r".
diff --git a/src/or/entrynodes.c b/src/or/entrynodes.c
index c3c576c..e0a3854 100644
--- a/src/or/entrynodes.c
+++ b/src/or/entrynodes.c
@@ -989,9 +989,11 @@ get_max_sample_size(guard_selection_t *gs,
   const int using_bridges = (gs->type == GS_TYPE_BRIDGE);
   const int min_sample = get_min_filtered_sample_size();
-  /* With bridges, max_sample is "all of them" */
+  /* If we are in bridge mode, expand our sample set as needed without worrying
+   * about max size. We should respect the user's wishes to use many bridges if
+   * that's what they have specified in their configuration file. */
   if (using_bridges)
-    return n_guards;
+    return INT_MAX;
   const int max_sample_by_pct = (int)(n_guards * get_max_sample_threshold());
   const int max_sample_absolute = get_max_sample_size_absolute();

More information about the tor-commits mailing list