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.
This commit is contained in:
Roger Dingledine 2016-10-31 00:23:53 -04:00
parent 28b755e660
commit d89804a69d
2 changed files with 19 additions and 0 deletions

10
changes/bug19969 Normal file
View File

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

View File

@ -892,6 +892,15 @@ connection_ap_mark_as_pending_circuit_(entry_connection_t *entry_conn,
untried_pending_connections = 1; untried_pending_connections = 1;
smartlist_add(pending_entry_connections, entry_conn); 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. */ /** Mark <b>entry_conn</b> as no longer waiting for a circuit. */