diff options
-rw-r--r-- | changes/bug4655 | 10 | ||||
-rw-r--r-- | 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 000000000..b91d87123 --- /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 5429b6c7e..c4744731d 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: |