From: Nick Mathewson Date: Wed, 15 Mar 2017 13:19:00 +0000 (-0400) Subject: Avoid a double-mark bug when makring a pending circuit as "too old" X-Git-Tag: tor-0.3.0.5-rc~10^2^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ec5fe41209add4b216029466774a6b7e833210ef;p=thirdparty%2Ftor.git Avoid a double-mark bug when makring a pending circuit as "too old" Fixes bug 20059; bugfix on 0.1.0.1-rc. --- diff --git a/changes/bug20059 b/changes/bug20059 new file mode 100644 index 0000000000..091fab06d1 --- /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 1a0bcf106e..de4b6a5845 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; }