Fix a startup time assert caused by periodic events not being initialized.

Loading a on disk bridge descriptor causes a directory download to be
scheduled, which asserts due to the periodic events not being
initialized yet.

Fixes bug #17635, not in any released version of tor.
This commit is contained in:
Yawning Angel 2015-11-18 11:27:24 +00:00
parent 8af5afedc9
commit 85bb71049a

View File

@ -2299,6 +2299,13 @@ do_main_loop(void)
{ {
time_t now; time_t now;
/* initialize the periodic events first, so that code that depends on the
* events being present does not assert.
*/
if (! periodic_events_initialized) {
initialize_periodic_events();
}
/* initialize dns resolve map, spawn workers if needed */ /* initialize dns resolve map, spawn workers if needed */
if (dns_init() < 0) { if (dns_init() < 0) {
if (get_options()->ServerDNSAllowBrokenConfig) if (get_options()->ServerDNSAllowBrokenConfig)
@ -2401,10 +2408,6 @@ do_main_loop(void)
tor_assert(second_timer); tor_assert(second_timer);
} }
if (! periodic_events_initialized) {
initialize_periodic_events();
}
#ifdef HAVE_SYSTEMD_209 #ifdef HAVE_SYSTEMD_209
uint64_t watchdog_delay; uint64_t watchdog_delay;
/* set up systemd watchdog notification. */ /* set up systemd watchdog notification. */