From ec5fe41209add4b216029466774a6b7e833210ef Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Wed, 15 Mar 2017 09:19:00 -0400 Subject: [PATCH] Avoid a double-mark bug when makring a pending circuit as "too old" Fixes bug 20059; bugfix on 0.1.0.1-rc. --- changes/bug20059 | 3 +++ src/or/onion.c | 4 +++- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 changes/bug20059 diff --git a/changes/bug20059 b/changes/bug20059 new file mode 100644 index 000000000..091fab06d --- /dev/null +++ b/changes/bug20059 @@ -0,0 +1,3 @@ + o Minor bugfixes (relay): + - Avoid a double-marked-circuit warning that can happen when we receive + DESTROY cells under heavy load. Fixes bug 20059; bugfix on 0.1.0.1-rc. diff --git a/src/or/onion.c b/src/or/onion.c index 1a0bcf106..de4b6a584 100644 --- a/src/or/onion.c +++ b/src/or/onion.c @@ -184,7 +184,9 @@ onion_pending_add(or_circuit_t *circ, create_cell_t *onionskin) onion_queue_entry_remove(head); log_info(LD_CIRC, "Circuit create request is too old; canceling due to overload."); - circuit_mark_for_close(TO_CIRCUIT(circ), END_CIRC_REASON_RESOURCELIMIT); + if (! TO_CIRCUIT(circ)->marked_for_close) { + circuit_mark_for_close(TO_CIRCUIT(circ), END_CIRC_REASON_RESOURCELIMIT); + } } return 0; }