Backport r17184: when building preemptive circuits, ignore streams

that have a chosen exit node in mind already. otherwise we get
tricked into trying to build a new circuit that will handle them.

svn:r17639
This commit is contained in:
Nick Mathewson 2008-12-17 13:14:47 +00:00
parent 119fd23f1e
commit 76eed8cc18
2 changed files with 4 additions and 3 deletions

View File

@ -14,8 +14,8 @@ Backport for 0.2.0 once better tested:
r17171 instead, to be even more resistant to poisoning.]
o r17091: distinguish "no routers support pending circuits" from
"no circuits are pending."
- See also r17181...
- ... and r17184.
o See also r17181...
o ... and r17184.
- r17137: send END cell in response to connect to nonexistent hidserv port.
- r17138: reject *:* servers should never do DNS lookups.
- r17139: Fix another case of overriding .exit choices.

View File

@ -1163,7 +1163,8 @@ ap_stream_wants_exit_attention(connection_t *conn)
conn->state == AP_CONN_STATE_CIRCUIT_WAIT &&
!conn->marked_for_close &&
!(TO_EDGE_CONN(conn)->want_onehop) && /* ignore one-hop streams */
!(TO_EDGE_CONN(conn)->use_begindir) && /* ignore targetted dir fetches */
!(TO_EDGE_CONN(conn)->use_begindir) && /* ignore targeted dir fetches */
!(TO_EDGE_CONN(conn)->chosen_exit_name) && /* ignore defined streams */
!connection_edge_is_rendezvous_stream(TO_EDGE_CONN(conn)) &&
!circuit_stream_is_being_handled(TO_EDGE_CONN(conn), 0,
MIN_CIRCUITS_HANDLING_STREAM))