Merge remote branch 'origin/maint-0.2.2'

This commit is contained in:
Nick Mathewson 2011-01-25 14:30:01 -05:00
commit 36880b3f17
2 changed files with 11 additions and 5 deletions

5
changes/bug2433 Normal file
View File

@ -0,0 +1,5 @@
o Major bugfixes:
- Don't assert when changing from bridge to relay or vice versa with a controller.
The assert happened because we didn't properly initialize our keys in this case.
Bugfix on 0.2.2.18, fixes bug 2433. Issue first discovered by bastik.

View File

@ -1275,7 +1275,6 @@ options_act(or_options_t *old_options)
/* Check for transitions that need action. */ /* Check for transitions that need action. */
if (old_options) { if (old_options) {
if ((options->UseEntryGuards && !old_options->UseEntryGuards) || if ((options->UseEntryGuards && !old_options->UseEntryGuards) ||
(options->ExcludeNodes && (options->ExcludeNodes &&
!routerset_equal(old_options->ExcludeNodes,options->ExcludeNodes)) || !routerset_equal(old_options->ExcludeNodes,options->ExcludeNodes)) ||
@ -1323,11 +1322,12 @@ options_act(or_options_t *old_options)
if (options_transition_affects_workers(old_options, options)) { if (options_transition_affects_workers(old_options, options)) {
log_info(LD_GENERAL, log_info(LD_GENERAL,
"Worker-related options changed. Rotating workers."); "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)) { if (server_mode(options) && !server_mode(old_options)) {
if (init_keys() < 0) {
log_warn(LD_BUG,"Error initializing keys; exiting");
return -1;
}
ip_address_changed(0); ip_address_changed(0);
if (can_complete_circuit || !any_predicted_circuits(time(NULL))) if (can_complete_circuit || !any_predicted_circuits(time(NULL)))
inform_testing_reachability(); inform_testing_reachability();
@ -3869,6 +3869,7 @@ options_transition_affects_workers(or_options_t *old_options,
new_options->ServerDNSSearchDomains || new_options->ServerDNSSearchDomains ||
old_options->SafeLogging != new_options->SafeLogging || old_options->SafeLogging != new_options->SafeLogging ||
old_options->ClientOnly != new_options->ClientOnly || old_options->ClientOnly != new_options->ClientOnly ||
public_server_mode(old_options) != public_server_mode(new_options) ||
!config_lines_eq(old_options->Logs, new_options->Logs)) !config_lines_eq(old_options->Logs, new_options->Logs))
return 1; return 1;