Browse Source

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

Nick Mathewson 6 years ago
parent
commit
4b41ffa64d
2 changed files with 12 additions and 1 deletions
  1. 7 0
      changes/bug18859
  2. 5 1
      src/or/circuituse.c

+ 7 - 0
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.

+ 5 - 1
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)) {