commit 472b62bfe4edb2f5e332c997be2ec69bdf590660 Author: Nick Mathewson nickm@torproject.org 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; }