]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Ask event_base_loop to finish when we add a pending stream
authorRoger Dingledine <arma@torproject.org>
Mon, 31 Oct 2016 04:23:53 +0000 (00:23 -0400)
committerRoger Dingledine <arma@torproject.org>
Tue, 1 Nov 2016 23:52:55 +0000 (19:52 -0400)
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.

changes/bug19969 [new file with mode: 0644]
src/or/connection_edge.c

diff --git a/changes/bug19969 b/changes/bug19969
new file mode 100644 (file)
index 0000000..0bdd880
--- /dev/null
@@ -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.
index 754e9762ea169ded2a4e84c72a024a414dc35505..8098fb017b5cd2ba4386f49754237d08246af78d 100644 (file)
@@ -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. */