[tor-commits] [tor/maint-0.2.6] Initialize the extorport auth cookie before launching PTs.

nickm at torproject.org nickm at torproject.org
Thu Mar 12 17:13:04 UTC 2015


commit b3281fc6d634ac32c6ce591313600b0ed56a9347
Author: Yawning Angel <yawning at schwanenlied.me>
Date:   Thu Mar 12 15:37:48 2015 +0000

    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.
---
 changes/bug15240 |    6 ++++++
 src/or/config.c  |   13 +++++++------
 2 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/changes/bug15240 b/changes/bug15240
new file mode 100644
index 0000000..e11f804
--- /dev/null
+++ b/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.
diff --git a/src/or/config.c b/src/or/config.c
index 5ba8c99..fca350c 100644
--- a/src/or/config.c
+++ b/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. */



More information about the tor-commits mailing list