[tor-commits] [tor] 02/04: hs: Retry rdv circuit if repurposed

gitolite role git at cupani.torproject.org
Wed Oct 26 19:09:27 UTC 2022


This is an automated email from the git hooks/post-receive script.

dgoulet pushed a commit to branch main
in repository tor.

commit a7aa22a4e76d0076e4c46f474708d2386c3139c6
Author: David Goulet <dgoulet at torproject.org>
AuthorDate: Mon Oct 24 11:03:38 2022 -0400

    hs: Retry rdv circuit if repurposed
    
    This can happen if our measurement subsystem decides to snatch it.
    
    Fixes #40696
    
    Signed-off-by: David Goulet <dgoulet at torproject.org>
---
 changes/ticket40696         |  3 +++
 src/feature/hs/hs_circuit.c | 11 +++++++++++
 2 files changed, 14 insertions(+)

diff --git a/changes/ticket40696 b/changes/ticket40696
new file mode 100644
index 0000000000..a2c09f6a83
--- /dev/null
+++ b/changes/ticket40696
@@ -0,0 +1,3 @@
+  o Minor bugfixes (onion service):
+    - Make the service retry a rendezvous if the circuit is being repurposed for
+      measurements. Fixes bug 40696; bugfix on 0.3.5.1-alpha.
diff --git a/src/feature/hs/hs_circuit.c b/src/feature/hs/hs_circuit.c
index d253802f79..edb5e692e7 100644
--- a/src/feature/hs/hs_circuit.c
+++ b/src/feature/hs/hs_circuit.c
@@ -1319,6 +1319,17 @@ hs_circ_cleanup_on_repurpose(circuit_t *circ)
   if (circ->hs_token) {
     hs_circuitmap_remove_circuit(circ);
   }
+
+  switch (circ->purpose) {
+  case CIRCUIT_PURPOSE_S_CONNECT_REND:
+    /* This circuit was connecting to a rendezvous point but it is being
+     * repurposed so we need to relaunch an attempt else the client will be
+     * left hanging waiting for the rendezvous. */
+    hs_circ_retry_service_rendezvous_point(TO_ORIGIN_CIRCUIT(circ));
+    break;
+  default:
+    break;
+  }
 }
 
 /** Return true iff the given established client rendezvous circuit was sent

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the tor-commits mailing list