Commit 472b62bf authored by Nick Mathewson's avatar Nick Mathewson 🤹 Committed by Andrea Shepard
Browse files

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.
parent 85ee5b30
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -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. */
+0 −8
Original line number Diff line number Diff line
@@ -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;
}