]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Initialize the extorport auth cookie before launching PTs.
authorYawning Angel <yawning@schwanenlied.me>
Thu, 12 Mar 2015 15:37:48 +0000 (15:37 +0000)
committerNick Mathewson <nickm@torproject.org>
Thu, 12 Mar 2015 17:12:56 +0000 (13:12 -0400)
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.

changes/bug15240 [new file with mode: 0644]
src/or/config.c

diff --git a/changes/bug15240 b/changes/bug15240
new file mode 100644 (file)
index 0000000..e11f804
--- /dev/null
@@ -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.
index 5ba8c997fae07fd62281a318f6586f829e7d7caa..fca350c203d29b0b7a94a5551373b47fdcdaa770 100644 (file)
@@ -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. */