[tor-commits] [tor/master] Clear stream-isolation state on rend circs if needed to attach streams

nickm at torproject.org nickm at torproject.org
Fri Dec 9 16:29:25 UTC 2011


commit 832bfc3c462f0b8dc1668b5b580f656a2b457a96
Author: Robert Ransom <rransom.8774 at gmail.com>
Date:   Tue Dec 6 05:02:58 2011 -0800

    Clear stream-isolation state on rend circs if needed to attach streams
    
    Fixes bug 4655; bugfix on 0.2.3.3-alpha.
---
 changes/bug4655     |   10 ++++++++++
 src/or/rendclient.c |    4 +++-
 2 files changed, 13 insertions(+), 1 deletions(-)

diff --git a/changes/bug4655 b/changes/bug4655
new file mode 100644
index 0000000..b91d871
--- /dev/null
+++ b/changes/bug4655
@@ -0,0 +1,10 @@
+  o Minor bugfixes:
+
+    - If we can't attach streams to a rendezvous circuit when we
+      finish connecting to a hidden service, clear the rendezvous
+      circuit's stream-isolation state and try to attach streams
+      again.  Previously, we cleared rendezvous circuits' isolation
+      state either too early (if they were freshly built) or not at
+      all (if they had been built earlier and were cannibalized).
+      Bugfix on 0.2.3.3-alpha; fixes bug 4655.
+
diff --git a/src/or/rendclient.c b/src/or/rendclient.c
index 5429b6c..c4744731 100644
--- a/src/or/rendclient.c
+++ b/src/or/rendclient.c
@@ -892,10 +892,12 @@ rend_client_receive_rendezvous(origin_circuit_t *circ, const uint8_t *request,
 
   onion_append_to_cpath(&circ->cpath, hop);
   circ->build_state->pending_final_cpath = NULL; /* prevent double-free */
+
   /* XXXX023 This is a pretty brute-force approach. It'd be better to
    * attach only the connections that are waiting on this circuit, rather
    * than trying to attach them all. See comments bug 743. */
-  connection_ap_attach_pending();
+  circuit_try_attaching_streams(circ);
+
   memset(keys, 0, sizeof(keys));
   return 0;
  err:





More information about the tor-commits mailing list