tor

The Tor anonymity network
git clone https://git.dasho.dev/tor.git
Log | Files | Refs | README | LICENSE

commit 4b41ffa64d251268602b06552a53da8cbd60af5c
parent d4ca18573ccd0164f4d867e41a8f453119ce421f
Author: Nick Mathewson <nickm@torproject.org>
Date:   Thu,  7 Dec 2017 08:42:49 -0500

Merge branch 'arthuredelstein_18859+1_031' into maint-0.3.2

Diffstat:
Achanges/bug18859 | 7+++++++
Msrc/or/circuituse.c | 6+++++-
2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/changes/bug18859 b/changes/bug18859 @@ -0,0 +1,7 @@ + o Major bugfixes (circuit prediction): + - Fix circuit prediction logic so that a client doesn't treat a stream as + being "handled" by a circuit if that circuit already has isolation + settings on it that might make it incompatible with the stream. This + change should make Tor clients more responsive by improving their + chances of having a pre-created circuit ready for use when a new client + request arrives. Fixes bug 18859; bugfix on 0.2.3.3-alpha. diff --git a/src/or/circuituse.c b/src/or/circuituse.c @@ -1001,7 +1001,7 @@ circuit_remove_handled_ports(smartlist_t *needed_ports) tor_assert(*port); if (circuit_stream_is_being_handled(NULL, *port, MIN_CIRCUITS_HANDLING_STREAM)) { -// log_debug(LD_CIRC,"Port %d is already being handled; removing.", port); + log_debug(LD_CIRC,"Port %d is already being handled; removing.", *port); smartlist_del(needed_ports, i--); tor_free(port); } else { @@ -1038,6 +1038,10 @@ circuit_stream_is_being_handled(entry_connection_t *conn, continue; if (origin_circ->unusable_for_new_conns) continue; + if (origin_circ->isolation_values_set && + (conn == NULL || + !connection_edge_compatible_with_circuit(conn, origin_circ))) + continue; exitnode = build_state_get_exit_node(build_state); if (exitnode && (!need_uptime || build_state->need_uptime)) {