Clear stream-isolation state on rend circs if needed to attach streams

Fixes bug 4655; bugfix on 0.2.3.3-alpha.
This commit is contained in:
Robert Ransom 2011-12-06 05:02:58 -08:00 committed by Nick Mathewson
parent 7b6b2d5fb8
commit 832bfc3c46
2 changed files with 13 additions and 1 deletions

10
changes/bug4655 Normal file
View File

@ -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.

View File

@ -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: