]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Fix a logic error in circuit_stream_is_being_handled.
authorNick Mathewson <nickm@torproject.org>
Sat, 21 Dec 2013 15:15:09 +0000 (10:15 -0500)
committerNick Mathewson <nickm@torproject.org>
Sat, 21 Dec 2013 15:15:09 +0000 (10:15 -0500)
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.

changes/bug10456 [new file with mode: 0644]
src/or/circuituse.c

diff --git a/changes/bug10456 b/changes/bug10456
new file mode 100644 (file)
index 0000000..fb3b92f
--- /dev/null
@@ -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.
+
index 25997ebdbec89aa39fe9b89530cf070d57fcbd2f..5984691989e4c6ddeaedb270680bd5b8593aeba1 100644 (file)
@@ -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);