diff options
author | Nick Mathewson <nickm@torproject.org> | 2017-09-11 16:32:40 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2017-09-11 16:32:40 -0400 |
commit | 2a1ddd78da86d6a675146ae2afabfbcede437a95 (patch) | |
tree | 60708cead33154ba7ffc2ac08172de51568fbe93 /src/or/hs_client.c | |
parent | 007d3d2337edf436cd9860a0430324b6904067e9 (diff) | |
parent | b71f4ecb8d289f0d8a44eaadedf51773640ff2b8 (diff) | |
download | tor-2a1ddd78da86d6a675146ae2afabfbcede437a95.tar.gz tor-2a1ddd78da86d6a675146ae2afabfbcede437a95.zip |
Merge remote-tracking branch 'dgoulet/bug23455_032_01'
Diffstat (limited to 'src/or/hs_client.c')
-rw-r--r-- | src/or/hs_client.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/or/hs_client.c b/src/or/hs_client.c index c98131cc77..c8b65aeab7 100644 --- a/src/or/hs_client.c +++ b/src/or/hs_client.c @@ -746,6 +746,14 @@ handle_introduce_ack_success(origin_circuit_t *intro_circ) } assert_circ_anonymity_ok(rend_circ, get_options()); + + /* It is possible to get a RENDEZVOUS2 cell before the INTRODUCE_ACK which + * means that the circuit will be joined and already transmitting data. In + * that case, simply skip the purpose change and close the intro circuit + * like it should be. */ + if (TO_CIRCUIT(rend_circ)->purpose == CIRCUIT_PURPOSE_C_REND_JOINED) { + goto end; + } circuit_change_purpose(TO_CIRCUIT(rend_circ), CIRCUIT_PURPOSE_C_REND_READY_INTRO_ACKED); /* Set timestamp_dirty, because circuit_expire_building expects it to |