From f89f14802e938c7abcd2a6387f64d442cefe72c2 Mon Sep 17 00:00:00 2001 From: Neel Chauhan Date: Tue, 6 Nov 2018 17:04:08 -0500 Subject: [PATCH] At intro points, don't close circuits on NACKs --- changes/bug27841 | 7 +++++++ src/or/hs_intropoint.c | 6 ------ 2 files changed, 7 insertions(+), 6 deletions(-) create mode 100644 changes/bug27841 diff --git a/changes/bug27841 b/changes/bug27841 new file mode 100644 index 0000000000..9cd1da7275 --- /dev/null +++ b/changes/bug27841 @@ -0,0 +1,7 @@ + o Minor bugfixes (onion services): + - On an intro point for a version 3 onion service, we do not close + an introduction circuit on an NACK. This lets the client decide + whether to reuse the circuit or discard it. Previously, we closed + intro circuits on NACKs. Fixes bug 27841; bugfix on 0.3.2.1-alpha. + Patch by Neel Chaunan + diff --git a/src/or/hs_intropoint.c b/src/or/hs_intropoint.c index 9eaf572510..a622c62dd4 100644 --- a/src/or/hs_intropoint.c +++ b/src/or/hs_intropoint.c @@ -501,12 +501,6 @@ handle_introduce1(or_circuit_t *client_circ, const uint8_t *request, /* Circuit has been closed on failure of transmission. */ goto done; } - if (status != HS_INTRO_ACK_STATUS_SUCCESS) { - /* We just sent a NACK that is a non success status code so close the - * circuit because it's not useful to keep it open. Remember, a client can - * only send one INTRODUCE1 cell on a circuit. */ - circuit_mark_for_close(TO_CIRCUIT(client_circ), END_CIRC_REASON_INTERNAL); - } done: trn_cell_introduce1_free(parsed_cell); return ret;