From 6045bdd4a0542ef11dc46d98495686172015a961 Mon Sep 17 00:00:00 2001 From: David Goulet Date: Thu, 21 Sep 2017 13:13:44 -0400 Subject: hs: Avoid possible double circuit close on error Fixes #23610 Signed-off-by: David Goulet --- src/or/hs_intropoint.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/or/hs_intropoint.c') diff --git a/src/or/hs_intropoint.c b/src/or/hs_intropoint.c index cb4d6c02e5..4a5202f614 100644 --- a/src/or/hs_intropoint.c +++ b/src/or/hs_intropoint.c @@ -255,7 +255,11 @@ handle_establish_intro(or_circuit_t *circ, const uint8_t *request, goto done; err: - circuit_mark_for_close(TO_CIRCUIT(circ), END_CIRC_REASON_TORPROTOCOL); + /* When sending the intro establish ack, on error the circuit can be marked + * as closed so avoid a double close. */ + if (!TO_CIRCUIT(circ)->marked_for_close) { + circuit_mark_for_close(TO_CIRCUIT(circ), END_CIRC_REASON_TORPROTOCOL); + } done: trn_cell_establish_intro_free(parsed_cell); -- cgit v1.2.3-54-g00ecf