[tor-commits] [tor/maint-0.4.0] rendservice: Always use a 3-hop path when a v2 single onion rend fails

teor at torproject.org teor at torproject.org
Tue Oct 22 22:49:04 UTC 2019


commit dc08f8ac70e95b9a76f86a5e15dfcabd7ada25b9
Author: teor <teor at torproject.org>
Date:   Fri Aug 23 14:38:54 2019 +1000

    rendservice: Always use a 3-hop path when a v2 single onion rend fails
    
    Previously, we used a 1-hop path when a single onion rend failed
    immediately, and a 3-hop path when it failed after trying to build
    a circuit.
    
    Fixes bug 23818; bugfix on 0.2.9.3-alpha.
---
 src/or/rendservice.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/or/rendservice.c b/src/or/rendservice.c
index 32b856452..f145e9d69 100644
--- a/src/or/rendservice.c
+++ b/src/or/rendservice.c
@@ -2073,8 +2073,12 @@ rend_service_receive_introduction(origin_circuit_t *circuit,
     int flags = CIRCLAUNCH_NEED_CAPACITY | CIRCLAUNCH_IS_INTERNAL;
     if (circ_needs_uptime) flags |= CIRCLAUNCH_NEED_UPTIME;
     /* A Single Onion Service only uses a direct connection if its
-     * firewall rules permit direct connections to the address. */
-    if (rend_service_use_direct_connection(options, rp)) {
+     * firewall rules permit direct connections to the address.
+     *
+     * We only use a one-hop path on the first attempt. If the first attempt
+     * fails, we use a 3-hop path for reachability / reliability.
+     * See the comment in rend_service_relauch_rendezvous() for details. */
+    if (rend_service_use_direct_connection(options, rp) && i == 0) {
       flags = flags | CIRCLAUNCH_ONEHOP_TUNNEL;
     }
     launched = circuit_launch_by_extend_info(





More information about the tor-commits mailing list