[tor-commits] [tor/maint-0.2.2] Fix assert for relay/bridge state change
arma at torproject.org
arma at torproject.org
Wed Oct 26 20:34:57 UTC 2011
commit 908289894419b8fa331197948cb048f08ff5d035
Author: Sebastian Hahn <sebastian at torproject.org>
Date: Tue Jan 25 15:28:58 2011 +0100
Fix assert for relay/bridge state change
When we added support for separate client tls certs on bridges in
a2bb0bfdd5 we forgot to correctly initialize this when changing
from relay to bridge or vice versa while Tor is running. Fix that
by always initializing keys when the state changes.
Fixes bug 2433.
Conflicts:
src/or/config.c
---
changes/bug2433 | 5 +++++
src/or/config.c | 10 ++++++----
2 files changed, 11 insertions(+), 4 deletions(-)
diff --git a/changes/bug2433 b/changes/bug2433
new file mode 100644
index 0000000..8e47c4f
--- /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 fbfa771..7d7f2c3 100644
--- a/src/or/config.c
+++ b/src/or/config.c
@@ -1371,11 +1371,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 (has_completed_circuit || !any_predicted_circuits(time(NULL)))
inform_testing_reachability();
@@ -3763,6 +3764,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;
More information about the tor-commits
mailing list