Merge branch 'maint-0.3.2'

This commit is contained in:
Nick Mathewson 2017-12-07 08:42:56 -05:00
commit 45b9b2245f
2 changed files with 12 additions and 1 deletions

7
changes/bug18859 Normal file
View File

@ -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.

View File

@ -1001,7 +1001,7 @@ circuit_remove_handled_ports(smartlist_t *needed_ports)
tor_assert(*port); tor_assert(*port);
if (circuit_stream_is_being_handled(NULL, *port, if (circuit_stream_is_being_handled(NULL, *port,
MIN_CIRCUITS_HANDLING_STREAM)) { 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--); smartlist_del(needed_ports, i--);
tor_free(port); tor_free(port);
} else { } else {
@ -1038,6 +1038,10 @@ circuit_stream_is_being_handled(entry_connection_t *conn,
continue; continue;
if (origin_circ->unusable_for_new_conns) if (origin_circ->unusable_for_new_conns)
continue; 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); exitnode = build_state_get_exit_node(build_state);
if (exitnode && (!need_uptime || build_state->need_uptime)) { if (exitnode && (!need_uptime || build_state->need_uptime)) {