diff options
-rw-r--r-- | changes/bug2433 | 5 | ||||
-rw-r--r-- | src/or/config.c | 11 |
2 files changed, 11 insertions, 5 deletions
diff --git a/changes/bug2433 b/changes/bug2433 new file mode 100644 index 000000000..8e47c4f02 --- /dev/null +++ b/changes/bug2433 @@ -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. + diff --git a/src/or/config.c b/src/or/config.c index b124db189..8c1205de4 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -1250,7 +1250,6 @@ options_act(or_options_t *old_options) /* Check for transitions that need action. */ if (old_options) { - if ((options->UseEntryGuards && !old_options->UseEntryGuards) || (options->ExcludeNodes && !routerset_equal(old_options->ExcludeNodes,options->ExcludeNodes)) || @@ -1298,11 +1297,12 @@ options_act(or_options_t *old_options) if (options_transition_affects_workers(old_options, options)) { 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)) { - if (init_keys() < 0) { - log_warn(LD_BUG,"Error initializing keys; exiting"); - return -1; - } ip_address_changed(0); if (can_complete_circuit || !any_predicted_circuits(time(NULL))) inform_testing_reachability(); @@ -3810,6 +3810,7 @@ options_transition_affects_workers(or_options_t *old_options, new_options->ServerDNSSearchDomains || old_options->SafeLogging != new_options->SafeLogging || 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)) return 1; |