Commit b41dd806 authored by Nick Mathewson's avatar Nick Mathewson 🎨
Browse files

When ReloadTorrcOnSIGHUP=1, do non-reload activities anyway

Previously, we skipped everything that got invoked from
options_init_from_torrc.  But some of the stuff in
options_act_reversible and options_act is actually important, like
reopening the logs.

Now, a SIGHUP always makes the effects of an options_set() happen,
even though the options haven't changed.

Fix for bug 5095; bugfix on, which introduced
parent d9ceab5b
o Minor bugfixes:
- When we receive a SIGHUP and the controller-use __ReloadTorrcOnSIGHUP
option is set to 0, perform other actions that SIGHUP usually causes
(like reopening the logs). Fixes bug 5095; bugfix on
......@@ -748,7 +748,7 @@ set_options(or_options_t *new_val, char **msg)
/* Issues a CONF_CHANGED event to notify controller of the change. If Tor is
* just starting up then the old_options will be undefined. */
if (old_options) {
if (old_options && old_options != global_options) {
elements = smartlist_new();
for (i=0; options_format.vars[i].name; ++i) {
const config_var_t *var = &options_format.vars[i];
......@@ -774,7 +774,9 @@ set_options(or_options_t *new_val, char **msg)
config_free(&options_format, old_options);
if (old_options != global_options)
config_free(&options_format, old_options);
return 0;
......@@ -1773,8 +1773,16 @@ do_hup(void)
options = get_options(); /* they have changed now */
} else {
char *msg = NULL;
log_notice(LD_GENERAL, "Not reloading config file: the controller told "
"us not to.");
/* Make stuff get rescanned, reloaded, etc. */
if (set_options((or_options_t*)options, &msg) < 0) {
if (!msg)
msg = tor_strdup("Unknown error");
log_warn(LD_GENERAL, "Unable to re-set previous options: %s", msg);
if (authdir_mode_handles_descs(options, -1)) {
/* reload the approved-routers file */
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment