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.
This commit is contained in:
Yawning Angel 2015-03-12 15:37:48 +00:00 committed by Nick Mathewson
parent c2dcd9b703
commit b3281fc6d6
2 changed files with 13 additions and 6 deletions

6
changes/bug15240 Normal file
View File

@ -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.

View 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. */