From ab35f9de46798845e83823115c6a266af2248eae Mon Sep 17 00:00:00 2001 From: David Goulet Date: Thu, 16 Jun 2016 12:58:30 -0400 Subject: [PATCH] Correctly close intro circuit when deleting ephemeral HS When deleting an ephemeral HS, we were only iterating on circuit with an OPEN state. However, it could be possible that an intro point circuit didn't reached the open state yet. This commit makes it that we close the circuit regardless of its state except if it was already marked for close. Fixes #18604 Signed-off-by: David Goulet --- changes/bug18604 | 4 ++++ src/or/rendservice.c | 1 - 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 changes/bug18604 diff --git a/changes/bug18604 b/changes/bug18604 new file mode 100644 index 0000000000..114c67e1c0 --- /dev/null +++ b/changes/bug18604 @@ -0,0 +1,4 @@ + o Minor bugfixes (ephemeral hidden service) + - When deleting an ephemeral hidden service, close its intro points even + if not in the open state. Resolves ticket #18604; bugfix on + tor-0.2.7.1-alpha. diff --git a/src/or/rendservice.c b/src/or/rendservice.c index 7426d8b35d..ff23050300 100644 --- a/src/or/rendservice.c +++ b/src/or/rendservice.c @@ -926,7 +926,6 @@ rend_service_del_ephemeral(const char *service_id) */ SMARTLIST_FOREACH_BEGIN(circuit_get_global_list(), circuit_t *, circ) { if (!circ->marked_for_close && - circ->state == CIRCUIT_STATE_OPEN && (circ->purpose == CIRCUIT_PURPOSE_S_ESTABLISH_INTRO || circ->purpose == CIRCUIT_PURPOSE_S_INTRO)) { origin_circuit_t *oc = TO_ORIGIN_CIRCUIT(circ);