From c50c98ba6a3eae0b9a3a19c4a3498809080d7ac0 Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Mon, 2 Oct 2017 11:11:30 -0400 Subject: [PATCH] Make changes in server_mode() affect workers; fix a crash. Without this fix, changes from client to bridge don't trigger transition_affects_workers(), so we would never have actually initialized the cpuworkers. Fixes bug 23693. Bugfix on 3bcdb26267502e0 0.2.6.3-alpha, which fixed bug 14901 in the general case, but not on the case where public_server_mode() did not change. --- changes/bug23693 | 6 ++++++ src/or/config.c | 1 + 2 files changed, 7 insertions(+) create mode 100644 changes/bug23693 diff --git a/changes/bug23693 b/changes/bug23693 new file mode 100644 index 0000000000..796398be51 --- /dev/null +++ b/changes/bug23693 @@ -0,0 +1,6 @@ + o Minor bugfixes (relay, crash): + - Avoid a crash when transitioning from client mode to bridge mode. + Previously, we would launch the worker threads whenever our "public + server" mode changed, but not when our "server" mode changed. + Fixes bug 23693; bugfix on 0.2.6.3-alpha. + diff --git a/src/or/config.c b/src/or/config.c index 2e001ee5ab..23c566c6ca 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -4453,6 +4453,7 @@ options_transition_affects_workers(const or_options_t *old_options, new_options->ServerDNSSearchDomains || old_options->SafeLogging_ != new_options->SafeLogging_ || old_options->ClientOnly != new_options->ClientOnly || + server_mode(old_options) != server_mode(new_options) || public_server_mode(old_options) != public_server_mode(new_options) || !config_lines_eq(old_options->Logs, new_options->Logs) || old_options->LogMessageDomains != new_options->LogMessageDomains)