[tor-commits] [tor/master] Fix a test assertion failure due to uninitialized mainloop events

nickm at torproject.org nickm at torproject.org
Thu Apr 26 18:40:45 UTC 2018


commit 302908657f492f064f9bddac794db477f53ab958
Author: Nick Mathewson <nickm at torproject.org>
Date:   Thu Apr 26 14:38:43 2018 -0400

    Fix a test assertion failure due to uninitialized mainloop events
    
    Bug not in any released Tor.
---
 src/or/main.c             | 23 +++++++++++++++--------
 src/or/main.h             |  1 +
 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 83d1e6a41..a7896fafa 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 4f3b84e30..33ef40ce4 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 b9b36d96d..312c07471 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",



More information about the tor-commits mailing list