summaryrefslogtreecommitdiff
path: root/src/or/control.c
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2018-05-09 12:47:59 -0400
committerNick Mathewson <nickm@torproject.org>2018-05-10 09:02:44 -0400
commit8b4cf7771e869bea4550452ad2cf5634278e0e87 (patch)
tree03659e6c5818c10d248ba54b72fc6fb12f1eabca /src/or/control.c
parente722bba263e6c4648fff4259a14677993697337c (diff)
downloadtor-8b4cf7771e869bea4550452ad2cf5634278e0e87.tar.gz
tor-8b4cf7771e869bea4550452ad2cf5634278e0e87.zip
Enable/disable per-second callback as needed.
There are three cases where this can happen: changes in our controller events, changes in our DisableNetwork setting, and changes in our hibernation state. Closes ticket 26063.
Diffstat (limited to 'src/or/control.c')
-rw-r--r--src/or/control.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/or/control.c b/src/or/control.c
index 44439b6d5f..237a8572d4 100644
--- a/src/or/control.c
+++ b/src/or/control.c
@@ -277,6 +277,7 @@ control_update_global_event_mask(void)
smartlist_t *conns = get_connection_array();
event_mask_t old_mask, new_mask;
old_mask = global_event_mask;
+ int any_old_per_sec_events = control_any_per_second_event_enabled();
global_event_mask = 0;
SMARTLIST_FOREACH(conns, connection_t *, _conn,
@@ -316,6 +317,10 @@ control_update_global_event_mask(void)
uint64_t r, w;
control_get_bytes_rw_last_sec(&r, &w);
}
+ if (any_old_per_sec_events != control_any_per_second_event_enabled()) {
+ reschedule_per_second_timer();
+ }
+
#undef NEWLY_ENABLED
}