[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[tor-commits] [tor/master] Uglify scheduler init logic to avoid crash on startup.



commit 472b62bfe4edb2f5e332c997be2ec69bdf590660
Author: Nick Mathewson <nickm@xxxxxxxxxxxxxx>
Date:   Mon Oct 14 13:33:36 2013 -0400

    Uglify scheduler init logic to avoid crash on startup.
    
    Otherwise, when we authority try to do a self-test because of
    init-keys, if that self-test can't be launched for whatever reason and
    so we close the channel immediately, we crash.
    
    Yes, this a silly way for initialization to work.
---
 src/or/config.c |    9 +++++++++
 src/or/main.c   |    8 --------
 2 files changed, 9 insertions(+), 8 deletions(-)

diff --git a/src/or/config.c b/src/or/config.c
index 16acec7..4ae9fad 100644
--- a/src/or/config.c
+++ b/src/or/config.c
@@ -43,6 +43,7 @@
 #include "util.h"
 #include "routerlist.h"
 #include "routerset.h"
+#include "scheduler.h"
 #include "statefile.h"
 #include "transports.h"
 #include "ext_orport.h"
@@ -1040,6 +1041,14 @@ options_act_reversible(const or_options_t *old_options, char **msg)
     if (running_tor && !libevent_initialized) {
       init_libevent(options);
       libevent_initialized = 1;
+
+      /*
+       * Initialize the scheduler - this has to come after
+       * options_init_from_torrc() sets up libevent - why yes, that seems
+       * completely sensible to hide the libevent setup in the option parsing
+       * code!  It also needs to happen before init_keys(), so it needs to
+       * happen here too.  How yucky. */
+      scheduler_init();
     }
 
     /* Adjust the port configuration so we can launch listeners. */
diff --git a/src/or/main.c b/src/or/main.c
index 1a2cfad..7b38f45 100644
--- a/src/or/main.c
+++ b/src/or/main.c
@@ -2456,14 +2456,6 @@ tor_init(int argc, char *argv[])
     log_warn(LD_NET, "Problem initializing libevent RNG.");
   }
 
-  /*
-   * Initialize the scheduler - this has to come after
-   * options_init_from_torrc() sets up libevent - why yes, that seems
-   * completely sensible to hide the libevent setup in the option parsing
-   * code!
-   */
-  scheduler_init();
-
   return 0;
 }
 



_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits