diff options
author | Nick Mathewson <nickm@torproject.org> | 2018-04-26 14:38:43 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2018-04-26 14:39:26 -0400 |
commit | 302908657f492f064f9bddac794db477f53ab958 (patch) | |
tree | cc3003c3eb8b9dfeb2b0b7e1eff9ad1ae8808545 /src | |
parent | 9fd319168bdedbdfba931d1deceb4653a4dff61b (diff) | |
download | tor-302908657f492f064f9bddac794db477f53ab958.tar.gz tor-302908657f492f064f9bddac794db477f53ab958.zip |
Fix a test assertion failure due to uninitialized mainloop events
Bug not in any released Tor.
Diffstat (limited to 'src')
-rw-r--r-- | src/or/main.c | 23 | ||||
-rw-r--r-- | src/or/main.h | 1 | ||||
-rw-r--r-- | src/test/testing_common.c | 3 |
3 files changed, 19 insertions, 8 deletions
diff --git a/src/or/main.c b/src/or/main.c index 83d1e6a41a..a7896fafa5 100644 --- a/src/or/main.c +++ b/src/or/main.c @@ -2617,6 +2617,20 @@ do_hup(void) return 0; } +/** Initialize some mainloop_event_t objects that we require. */ +STATIC void +initialize_mainloop_events(void) +{ + if (!schedule_active_linked_connections_event) { + schedule_active_linked_connections_event = + mainloop_event_postloop_new(schedule_active_linked_connections_cb, NULL); + } + if (!postloop_cleanup_ev) { + postloop_cleanup_ev = + mainloop_event_postloop_new(postloop_cleanup_cb, NULL); + } +} + /** Tor main loop. */ int do_main_loop(void) @@ -2630,14 +2644,7 @@ do_main_loop(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); - } - if (!postloop_cleanup_ev) { - postloop_cleanup_ev = - mainloop_event_postloop_new(postloop_cleanup_cb, NULL); - } + initialize_mainloop_events(); /* initialize dns resolve map, spawn workers if needed */ if (dns_init() < 0) { diff --git a/src/or/main.h b/src/or/main.h index 4f3b84e302..33ef40ce40 100644 --- a/src/or/main.h +++ b/src/or/main.h @@ -97,6 +97,7 @@ extern token_bucket_rw_t global_relayed_bucket; #ifdef MAIN_PRIVATE STATIC void init_connection_lists(void); +STATIC void initialize_mainloop_events(void); STATIC void close_closeable_connections(void); STATIC void initialize_periodic_events(void); STATIC void teardown_periodic_events(void); diff --git a/src/test/testing_common.c b/src/test/testing_common.c index b9b36d96d0..312c07471d 100644 --- a/src/test/testing_common.c +++ b/src/test/testing_common.c @@ -8,6 +8,7 @@ * \brief Common pieces to implement unit tests. **/ +#define MAIN_PRIVATE #include "orconfig.h" #include "or.h" #include "control.h" @@ -16,6 +17,7 @@ #include "backtrace.h" #include "test.h" #include "channelpadding.h" +#include "main.h" #include <stdio.h> #ifdef HAVE_FCNTL_H @@ -290,6 +292,7 @@ main(int c, const char **v) } rep_hist_init(); setup_directory(); + initialize_mainloop_events(); options_init(options); options->DataDirectory = tor_strdup(temp_dir); tor_asprintf(&options->KeyDirectory, "%s"PATH_SEPARATOR"keys", |