Kaynağa Gözat

Ask event_base_loop to finish when we add a pending stream

Fixes bug 19969; bugfix on b1d56fc58. We can fix this some more in
later Tors, but for now, this is probably the right fix for us.
Roger Dingledine 10 yıl önce
ebeveyn
işleme
d89804a69d
2 değiştirilmiş dosya ile 19 ekleme ve 0 silme
  1. 10 0
      changes/bug19969
  2. 9 0
      src/or/connection_edge.c

+ 10 - 0
changes/bug19969

@@ -0,0 +1,10 @@
+  o Major bugfixes (client performance);
+    - Clients now respond to new application stream requests when
+      they arrive, rather than waiting up to one second before starting
+      to handle them. Fixes part of bug 19969; bugfix on 0.2.8.1-alpha.
+
+  o Major bugfixes (clients on flaky network connections);
+    - When Tor leaves standby because of a new application request, open
+      circuits as needed to serve that request. Previously, we would
+      potentially wait a very long time. Fixes part of bug 19969; bugfix
+      on 0.2.8.1-alpha.

+ 9 - 0
src/or/connection_edge.c

@@ -892,6 +892,15 @@ connection_ap_mark_as_pending_circuit_(entry_connection_t *entry_conn,
 
   untried_pending_connections = 1;
   smartlist_add(pending_entry_connections, entry_conn);
+
+  /* Work-around for bug 19969: we handle pending_entry_connections at
+   * the end of run_main_loop_once(), but in many cases that function will
+   * take a very long time, if ever, to finish its call to event_base_loop().
+   *
+   * So the fix is to tell it right now that it ought to finish its loop at
+   * its next available opportunity.
+   */
+  tell_event_loop_to_finish();
 }
 
 /** Mark <b>entry_conn</b> as no longer waiting for a circuit. */