aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2018-04-26 14:38:43 -0400
committerNick Mathewson <nickm@torproject.org>2018-04-26 14:39:26 -0400
commit302908657f492f064f9bddac794db477f53ab958 (patch)
treecc3003c3eb8b9dfeb2b0b7e1eff9ad1ae8808545 /src
parent9fd319168bdedbdfba931d1deceb4653a4dff61b (diff)
downloadtor-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.c23
-rw-r--r--src/or/main.h1
-rw-r--r--src/test/testing_common.c3
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",