commit 2aff02eb3dee506424874bd6d9c1ded3860abc22 Author: Nick Mathewson nickm@torproject.org Date: Tue Nov 6 07:40:02 2018 -0500
Actually disable NEED_NET periodic events when DisableNetwork is set
Fixes bug 28348; bugfix on 0.3.4.1-alpha --- changes/bug28348_034 | 5 +++++ src/or/main.c | 7 ++++--- 2 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/changes/bug28348_034 b/changes/bug28348_034 new file mode 100644 index 000000000..3913c03a4 --- /dev/null +++ b/changes/bug28348_034 @@ -0,0 +1,5 @@ + o Major bugfixes (embedding, main loop): + - When DisableNetwork becomes set, actually disable periodic events that + are already enabled. (Previously, we would refrain from enabling new + ones, but we would leave the old ones turned on.) + Fixes bug 28348; bugfix on 0.3.4.1-alpha. diff --git a/src/or/main.c b/src/or/main.c index bc01e07c3..184bf9e4e 100644 --- a/src/or/main.c +++ b/src/or/main.c @@ -1597,15 +1597,17 @@ rescan_periodic_events(const or_options_t *options) for (int i = 0; periodic_events[i].name; ++i) { periodic_event_item_t *item = &periodic_events[i];
+ int enable = !!(item->roles & roles); + /* Handle the event flags. */ if (net_is_disabled() && (item->flags & PERIODIC_EVENT_FLAG_NEED_NET)) { - continue; + enable = 0; }
/* Enable the event if needed. It is safe to enable an event that was * already enabled. Same goes for disabling it. */ - if (item->roles & roles) { + if (enable) { log_debug(LD_GENERAL, "Launching periodic event %s", item->name); periodic_event_enable(item); } else { @@ -4319,4 +4321,3 @@ tor_run_main(const tor_main_configuration_t *tor_cfg) tor_cleanup(); return result; } -
tor-commits@lists.torproject.org