Kaynağa Gözat

Initialize the extorport auth cookie before launching PTs.

PTs expect the auth cookie to be available immedieately after launch,
leading to a race condition when PTs opt to cache the extorport cookie
once immediately after startup.

Fixes #15240.
Yawning Angel 9 yıl önce
ebeveyn
işleme
b3281fc6d6
2 değiştirilmiş dosya ile 13 ekleme ve 6 silme
  1. 6 0
      changes/bug15240
  2. 7 6
      src/or/config.c

+ 6 - 0
changes/bug15240

@@ -0,0 +1,6 @@
+  o Minor bugfixes (pluggable transports):
+    - Initialize the extended OR Port authentication cookie before launching
+      pluggable transports. This prevents a race condition that occured when
+      server-side pluggable transports would cache the authentication cookie
+      before it has been (re)generated. Fixes bug 15240; bugfix on
+      0.2.5.1-alpha.

+ 7 - 6
src/or/config.c

@@ -1451,6 +1451,13 @@ options_act(const or_options_t *old_options)
     rep_hist_load_mtbf_data(time(NULL));
   }
 
+  /* If we have an ExtORPort, initialize its auth cookie. */
+  if (running_tor &&
+      init_ext_or_cookie_authentication(!!options->ExtORPort_lines) < 0) {
+    log_warn(LD_CONFIG,"Error creating Extended ORPort cookie file.");
+    return -1;
+  }
+
   mark_transport_list();
   pt_prepare_proxy_list_for_config_read();
   if (!options->DisableNetwork) {
@@ -1555,12 +1562,6 @@ options_act(const or_options_t *old_options)
     return -1;
   }
 
-  /* If we have an ExtORPort, initialize its auth cookie. */
-  if (init_ext_or_cookie_authentication(!!options->ExtORPort_lines) < 0) {
-    log_warn(LD_CONFIG,"Error creating Extended ORPort cookie file.");
-    return -1;
-  }
-
   monitor_owning_controller_process(options->OwningControllerProcess);
 
   /* reload keys as needed for rendezvous services. */