mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-12-06 19:41:15 +01:00
Reinit keys at the start of options_act().
Previously we did this nearer to the end (in the old_options && transition_affects_workers() block). But other stuff cares about keys being consistent with options... particularly anything which tries to access a key, which can die in assert_identity_keys_ok(). Fixes bug 3228; bugfix on 0.2.2.18-alpha. Conflicts: src/or/config.c
This commit is contained in:
committed by
Sebastian Hahn
parent
62c29a93ba
commit
55d9e4b8ba
@@ -0,0 +1,3 @@
|
||||
o Major bugfixes:
|
||||
- Resolve a crash that occured when setting BridgeRelay to 1 with
|
||||
accounting enabled. Fixes bug 3228; bugfix on 0.2.2.18-alpha.
|
||||
+15
-8
@@ -1269,12 +1269,26 @@ options_act(or_options_t *old_options)
|
||||
or_options_t *options = get_options();
|
||||
int running_tor = options->command == CMD_RUN_TOR;
|
||||
char *msg;
|
||||
const int transition_affects_workers =
|
||||
old_options && options_transition_affects_workers(old_options, options);
|
||||
|
||||
if (running_tor && !have_lockfile()) {
|
||||
if (try_locking(options, 1) < 0)
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* We want to reinit keys as needed before we do much of anything else:
|
||||
keys are important, and other things can depend on them. */
|
||||
if (running_tor &&
|
||||
(transition_affects_workers ||
|
||||
(options->V3AuthoritativeDir && (!old_options ||
|
||||
!old_options->V3AuthoritativeDir)))) {
|
||||
if (init_keys() < 0) {
|
||||
log_warn(LD_BUG,"Error initializing keys; exiting");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
if (consider_adding_dir_authorities(options, old_options) < 0)
|
||||
return -1;
|
||||
|
||||
@@ -1368,14 +1382,10 @@ options_act(or_options_t *old_options)
|
||||
geoip_remove_old_clients(time(NULL)+(2*60*60));
|
||||
}
|
||||
|
||||
if (options_transition_affects_workers(old_options, options)) {
|
||||
if (transition_affects_workers) {
|
||||
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)) {
|
||||
ip_address_changed(0);
|
||||
if (has_completed_circuit || !any_predicted_circuits(time(NULL)))
|
||||
@@ -1388,9 +1398,6 @@ options_act(or_options_t *old_options)
|
||||
if (dns_reset())
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (options->V3AuthoritativeDir && !old_options->V3AuthoritativeDir)
|
||||
init_keys();
|
||||
}
|
||||
|
||||
/* Maybe load geoip file */
|
||||
|
||||
Reference in New Issue
Block a user