[tor-commits] [tor/release-0.3.5] Preemptive circs should work with UseEntryGuards 0

ahf at torproject.org ahf at torproject.org
Tue Jun 30 14:24:41 UTC 2020


commit 39f2411b3f5ab1a50c74fdafb432d5286c451ab7
Author: Roger Dingledine <arma at torproject.org>
Date:   Sat May 30 01:54:22 2020 -0400

    Preemptive circs should work with UseEntryGuards 0
    
    Resume being willing to use preemptively-built circuits when
    UseEntryGuards is set to 0. We accidentally disabled this feature with
    that config setting (in our fix for #24469), leading to slower load times.
    
    Fixes bug 34303; bugfix on 0.3.3.2-alpha.
---
 changes/bug34303                | 5 +++++
 src/core/or/circuitlist.c       | 2 +-
 src/feature/client/entrynodes.c | 8 +++++++-
 3 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/changes/bug34303 b/changes/bug34303
new file mode 100644
index 000000000..dce57f464
--- /dev/null
+++ b/changes/bug34303
@@ -0,0 +1,5 @@
+  o Minor bugfixes (client performance):
+    - Resume being willing to use preemptively-built circuits when
+      UseEntryGuards is set to 0. We accidentally disabled this feature
+      with that config setting, leading to slower load times. Fixes bug
+      34303; bugfix on 0.3.3.2-alpha.
diff --git a/src/core/or/circuitlist.c b/src/core/or/circuitlist.c
index be5ac3b7f..03d495cdf 100644
--- a/src/core/or/circuitlist.c
+++ b/src/core/or/circuitlist.c
@@ -1883,7 +1883,7 @@ circuit_find_to_cannibalize(uint8_t purpose_to_produce, extend_info_t *info,
       }
 
       /* Ignore any circuits for which we can't use the Guard. It is possible
-       * that the Guard was removed from the samepled set after the circuit
+       * that the Guard was removed from the sampled set after the circuit
        * was created so avoid using it. */
       if (!entry_guard_could_succeed(circ->guard_state)) {
         goto next;
diff --git a/src/feature/client/entrynodes.c b/src/feature/client/entrynodes.c
index 7c2159ce8..8d9230b66 100644
--- a/src/feature/client/entrynodes.c
+++ b/src/feature/client/entrynodes.c
@@ -3452,10 +3452,16 @@ entry_guards_update_state(or_state_t *state)
   entry_guards_dirty = 0;
 }
 
-/** Return true iff the circuit's guard can succeed that is can be used. */
+/** Return true iff the circuit's guard can succeed, that is, can be used. */
 int
 entry_guard_could_succeed(const circuit_guard_state_t *guard_state)
 {
+  if (get_options()->UseEntryGuards == 0) {
+    /* we're fine with this circuit's first hop, because we're not
+     * configured to use entry guards. */
+    return 1;
+  }
+
   if (!guard_state) {
     return 0;
   }





More information about the tor-commits mailing list