[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[or-cvs] [tor/master 4/5] Never queue a cell on a marked circuit
Author: Nick Mathewson <nickm@xxxxxxxxxxxxxx>
Date: Wed, 15 Sep 2010 13:06:54 -0400
Subject: Never queue a cell on a marked circuit
Commit: 87f18c9578323cbb9229aba9a271bc7a6362a07a
---
changes/bug1184 | 2 ++
src/or/relay.c | 3 +++
2 files changed, 5 insertions(+), 0 deletions(-)
diff --git a/changes/bug1184 b/changes/bug1184
index 003ad0d..856cdc6 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 e740fbf..6d51f18 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;
--
1.7.1