Merge branch 'bug3228_squashed' into maint-0.2.2

This commit is contained in:
Nick Mathewson 2011-05-30 12:42:08 -04:00
commit 6802499413
2 changed files with 18 additions and 8 deletions

3
changes/bug3228 Normal file
View File

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

View File

@ -1172,12 +1172,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;
@ -1346,14 +1360,10 @@ options_act(or_options_t *old_options)
}
}
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 (can_complete_circuit || !any_predicted_circuits(time(NULL)))
@ -1367,9 +1377,6 @@ options_act(or_options_t *old_options)
return -1;
}
if (options->V3AuthoritativeDir && !old_options->V3AuthoritativeDir)
init_keys();
if (options->PerConnBWRate != old_options->PerConnBWRate ||
options->PerConnBWBurst != old_options->PerConnBWBurst)
connection_or_update_token_buckets(get_connection_array(), options);