aboutsummaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2018-09-27 12:44:20 -0400
committerNick Mathewson <nickm@torproject.org>2018-09-27 13:24:36 -0400
commitd0b2b5a20269c050d5346a869940b55ff2add190 (patch)
tree2b7b99397499e06e85758e2c1ab7d4264ea3991f /src/core
parentde0b07c634c45297bad794567cb44ab91988b0ca (diff)
downloadtor-d0b2b5a20269c050d5346a869940b55ff2add190.tar.gz
tor-d0b2b5a20269c050d5346a869940b55ff2add190.zip
Always initialize the periodic events list.
Various places in our code try to activate these events or check their status, so we should make sure they're initialized as early as possible. Fixes bug 27861; bugfix on 0.3.5.1-alpha.
Diffstat (limited to 'src/core')
-rw-r--r--src/core/mainloop/mainloop.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/core/mainloop/mainloop.c b/src/core/mainloop/mainloop.c
index 4a9da43c9c..6e7033ec4b 100644
--- a/src/core/mainloop/mainloop.c
+++ b/src/core/mainloop/mainloop.c
@@ -1535,7 +1535,9 @@ initialize_periodic_events_cb(evutil_socket_t fd, short events, void *data)
STATIC void
initialize_periodic_events(void)
{
- tor_assert(periodic_events_initialized == 0);
+ if (periodic_events_initialized)
+ return;
+
periodic_events_initialized = 1;
/* Set up all periodic events. We'll launch them by roles. */
@@ -2682,6 +2684,8 @@ dns_servers_relaunch_checks(void)
void
initialize_mainloop_events(void)
{
+ initialize_periodic_events();
+
if (!schedule_active_linked_connections_event) {
schedule_active_linked_connections_event =
mainloop_event_postloop_new(schedule_active_linked_connections_cb, NULL);
@@ -2699,10 +2703,7 @@ do_main_loop(void)
/* initialize the periodic events first, so that code that depends on the
* events being present does not assert.
*/
- if (! periodic_events_initialized) {
- initialize_periodic_events();
- }
-
+ initialize_periodic_events();
initialize_mainloop_events();
/* set up once-a-second callback. */