[tor-commits] [tor/master] hs: Avoid possible double circuit close on error

nickm at torproject.org nickm at torproject.org
Fri Sep 22 13:09:27 UTC 2017


commit dc5c9af6c383b97b47f86b3860e9693686bf0466
Author: David Goulet <dgoulet at torproject.org>
Date:   Thu Sep 21 13:13:44 2017 -0400

    hs: Avoid possible double circuit close on error
    
    Fixes #23610
    
    Signed-off-by: David Goulet <dgoulet at torproject.org>
---
 changes/bug23610       | 4 ++++
 src/or/hs_intropoint.c | 6 +++++-
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/changes/bug23610 b/changes/bug23610
new file mode 100644
index 000000000..f2dc8bd1a
--- /dev/null
+++ b/changes/bug23610
@@ -0,0 +1,4 @@
+  o Minor bugfixes (hidden service, relay):
+    - Avoid a possible double close of a circuit by the intro point on error
+      of sending the INTRO_ESTABLISHED cell. Fixes ticket 23610; bugfix on
+      0.3.0.1-alpha.
diff --git a/src/or/hs_intropoint.c b/src/or/hs_intropoint.c
index e065ef64f..bc493e297 100644
--- a/src/or/hs_intropoint.c
+++ b/src/or/hs_intropoint.c
@@ -253,7 +253,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:
   hs_cell_establish_intro_free(parsed_cell);





More information about the tor-commits mailing list