Browse Source

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.
Yawning Angel 8 years ago
parent
commit
85bb71049a
1 changed files with 7 additions and 4 deletions
  1. 7 4
      src/or/main.c

+ 7 - 4
src/or/main.c

@@ -2299,6 +2299,13 @@ do_main_loop(void)
 {
   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 */
   if (dns_init() < 0) {
     if (get_options()->ServerDNSAllowBrokenConfig)
@@ -2401,10 +2408,6 @@ do_main_loop(void)
     tor_assert(second_timer);
   }
 
-  if (! periodic_events_initialized) {
-    initialize_periodic_events();
-  }
-
 #ifdef HAVE_SYSTEMD_209
   uint64_t watchdog_delay;
   /* set up systemd watchdog notification. */