From: Roger Dingledine Date: Mon, 31 Oct 2016 04:23:53 +0000 (-0400) Subject: Ask event_base_loop to finish when we add a pending stream X-Git-Tag: tor-0.2.8.10~8^2^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d89804a69d1b1f92076d47aac953776e1a3cd867;p=thirdparty%2Ftor.git 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. --- diff --git a/changes/bug19969 b/changes/bug19969 new file mode 100644 index 0000000000..0bdd880bb7 --- /dev/null +++ b/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. diff --git a/src/or/connection_edge.c b/src/or/connection_edge.c index 754e9762ea..8098fb017b 100644 --- a/src/or/connection_edge.c +++ b/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 entry_conn as no longer waiting for a circuit. */