aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2013-12-21 10:15:09 -0500
committerNick Mathewson <nickm@torproject.org>2013-12-21 10:15:09 -0500
commitb5d13d11c90cb94193b6071e8c525f75cc77b861 (patch)
tree24d790ce847fa5d61f532809bd04d1dc28774bd8
parentdabdc339fe5abc5949f087621996672c122101b6 (diff)
downloadtor-b5d13d11c90cb94193b6071e8c525f75cc77b861.tar.gz
tor-b5d13d11c90cb94193b6071e8c525f75cc77b861.zip
Fix a logic error in circuit_stream_is_being_handled.
When I introduced the unusable_for_new_circuits flag in 62fb209d837f3f551, I had a spurious ! in the circuit_stream_is_being_handled loop. This made us decide that non-unusable circuits (that is, usable ones) were the ones to avoid, and caused it to launch a bunch of extra circuits. Fixes bug 10456; bugfix on 0.2.4.12-alpha.
-rw-r--r--changes/bug104566
-rw-r--r--src/or/circuituse.c2
2 files changed, 7 insertions, 1 deletions
diff --git a/changes/bug10456 b/changes/bug10456
new file mode 100644
index 0000000000..fb3b92fcd8
--- /dev/null
+++ b/changes/bug10456
@@ -0,0 +1,6 @@
+ o Major bugfixes:
+ - Avoid launching spurious extra circuits when a stream is pending.
+ This fixes a bug where any circuit that _wasn't_ unusable for new
+ streams would be treated as if it were, causing extra circuits to
+ be launched. Fixes bug 10456; bugfix on 0.2.4.12-alpha.
+
diff --git a/src/or/circuituse.c b/src/or/circuituse.c
index 25997ebdbe..5984691989 100644
--- a/src/or/circuituse.c
+++ b/src/or/circuituse.c
@@ -828,7 +828,7 @@ circuit_stream_is_being_handled(entry_connection_t *conn,
cpath_build_state_t *build_state = origin_circ->build_state;
if (build_state->is_internal || build_state->onehop_tunnel)
continue;
- if (!origin_circ->unusable_for_new_conns)
+ if (origin_circ->unusable_for_new_conns)
continue;
exitnode = build_state_get_exit_node(build_state);