From 87f18c9578323cbb9229aba9a271bc7a6362a07a Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Wed, 15 Sep 2010 13:06:54 -0400 Subject: Never queue a cell on a marked circuit --- changes/bug1184 | 2 ++ src/or/relay.c | 3 +++ 2 files changed, 5 insertions(+) diff --git a/changes/bug1184 b/changes/bug1184 index 003ad0d916..856cdc644d 100644 --- a/changes/bug1184 +++ b/changes/bug1184 @@ -4,4 +4,6 @@ it may have been possible for a few queued cells to get relayed, even though they would have been immediately dropped by the next OR in the circuit. Fix 1184; bugfix on 0.2.0.1-alpha. + - Never queue a cell for a circuit that's already been marked + for close. diff --git a/src/or/relay.c b/src/or/relay.c index e740fbf595..6d51f18a3a 100644 --- a/src/or/relay.c +++ b/src/or/relay.c @@ -2272,6 +2272,9 @@ append_cell_to_circuit_queue(circuit_t *circ, or_connection_t *orconn, { cell_queue_t *queue; int streams_blocked; + if (circ->marked_for_close) + return; + if (direction == CELL_DIRECTION_OUT) { queue = &circ->n_conn_cells; streams_blocked = circ->streams_blocked_on_n_conn; -- cgit v1.2.3-54-g00ecf