Prechádzať zdrojové kódy

Merge remote branch 'origin/maint-0.2.2'

Nick Mathewson 13 rokov pred
rodič
commit
36880b3f17
2 zmenil súbory, kde vykonal 11 pridanie a 5 odobranie
  1. 5 0
      changes/bug2433
  2. 6 5
      src/or/config.c

+ 5 - 0
changes/bug2433

@@ -0,0 +1,5 @@
+  o Major bugfixes:
+    - Don't assert when changing from bridge to relay or vice versa with a controller.
+      The assert happened because we didn't properly initialize our keys in this case.
+      Bugfix on 0.2.2.18, fixes bug 2433. Issue first discovered by bastik.
+

+ 6 - 5
src/or/config.c

@@ -1275,7 +1275,6 @@ options_act(or_options_t *old_options)
 
   /* Check for transitions that need action. */
   if (old_options) {
-
     if ((options->UseEntryGuards && !old_options->UseEntryGuards) ||
         (options->ExcludeNodes &&
          !routerset_equal(old_options->ExcludeNodes,options->ExcludeNodes)) ||
@@ -1323,11 +1322,12 @@ options_act(or_options_t *old_options)
     if (options_transition_affects_workers(old_options, options)) {
       log_info(LD_GENERAL,
                "Worker-related options changed. Rotating workers.");
+
+      if (init_keys() < 0) {
+        log_warn(LD_BUG,"Error initializing keys; exiting");
+        return -1;
+      }
       if (server_mode(options) && !server_mode(old_options)) {
-        if (init_keys() < 0) {
-          log_warn(LD_BUG,"Error initializing keys; exiting");
-          return -1;
-        }
         ip_address_changed(0);
         if (can_complete_circuit || !any_predicted_circuits(time(NULL)))
           inform_testing_reachability();
@@ -3869,6 +3869,7 @@ options_transition_affects_workers(or_options_t *old_options,
                                        new_options->ServerDNSSearchDomains ||
       old_options->SafeLogging != new_options->SafeLogging ||
       old_options->ClientOnly != new_options->ClientOnly ||
+      public_server_mode(old_options) != public_server_mode(new_options) ||
       !config_lines_eq(old_options->Logs, new_options->Logs))
     return 1;