Explorar el Código

stop asserting at boot

The patch for 3228 made us try to run init_keys() before we had loaded
our state file, resulting in an assert inside init_keys. We had moved
it too early in the function.

Now it's later in the function, but still above the accounting calls.
Roger Dingledine hace 14 años
padre
commit
56771f392e
Se han modificado 1 ficheros con 11 adiciones y 12 borrados
  1. 11 12
      src/or/config.c

+ 11 - 12
src/or/config.c

@@ -1180,18 +1180,6 @@ options_act(or_options_t *old_options)
       return -1;
   }
 
-  /* We want to reinit keys as needed before we do much of anything else:
-     keys are important, and other things can depend on them. */
-  if (running_tor &&
-      (transition_affects_workers ||
-       (options->V3AuthoritativeDir && (!old_options ||
-                                        !old_options->V3AuthoritativeDir)))) {
-    if (init_keys() < 0) {
-      log_warn(LD_BUG,"Error initializing keys; exiting");
-      return -1;
-    }
-  }
-
   if (consider_adding_dir_authorities(options, old_options) < 0)
     return -1;
 
@@ -1237,6 +1225,17 @@ options_act(or_options_t *old_options)
     finish_daemon(options->DataDirectory);
   }
 
+  /* We want to reinit keys as needed before we do much of anything else:
+     keys are important, and other things can depend on them. */
+  if (transition_affects_workers ||
+      (options->V3AuthoritativeDir && (!old_options ||
+                                       !old_options->V3AuthoritativeDir))) {
+    if (init_keys() < 0) {
+      log_warn(LD_BUG,"Error initializing keys; exiting");
+      return -1;
+    }
+  }
+
   /* Write our PID to the PID file. If we do not have write permissions we
    * will log a warning */
   if (options->PidFile)