Pārlūkot izejas kodu

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 <dgoulet@torproject.org>
David Goulet 8 gadi atpakaļ
vecāks
revīzija
ab35f9de46
2 mainītis faili ar 4 papildinājumiem un 1 dzēšanām
  1. 4 0
      changes/bug18604
  2. 0 1
      src/or/rendservice.c

+ 4 - 0
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.

+ 0 - 1
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);