summaryrefslogtreecommitdiff
path: root/src/app/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/app/main')
-rw-r--r--src/app/main/main.c11
-rw-r--r--src/app/main/ntmain.c1
-rw-r--r--src/app/main/shutdown.c2
-rw-r--r--src/app/main/subsystem_list.c50
4 files changed, 37 insertions, 27 deletions
diff --git a/src/app/main/main.c b/src/app/main/main.c
index f3772f86e4..1901479eba 100644
--- a/src/app/main/main.c
+++ b/src/app/main/main.c
@@ -41,6 +41,7 @@
#include "feature/dircache/consdiffmgr.h"
#include "feature/dirparse/routerparse.h"
#include "feature/hibernate/hibernate.h"
+#include "feature/hs/hs_dos.h"
#include "feature/nodelist/authcert.h"
#include "feature/nodelist/networkstatus.h"
#include "feature/nodelist/routerlist.h"
@@ -637,6 +638,10 @@ tor_init(int argc, char *argv[])
/* Initialize circuit padding to defaults+torrc until we get a consensus */
circpad_machines_init();
+ /* Initialize hidden service DoS subsystem. We need to do this once the
+ * configuration object has been set because it can be accessed. */
+ hs_dos_init();
+
/* Initialize predicted ports list after loading options */
predicted_ports_init();
@@ -653,10 +658,6 @@ tor_init(int argc, char *argv[])
return -1;
}
- if (tor_init_libevent_rng() < 0) {
- log_warn(LD_NET, "Problem initializing libevent RNG.");
- }
-
/* Scan/clean unparseable descriptors; after reading config */
routerparse_init();
@@ -1256,6 +1257,8 @@ pubsub_connect(void)
/* XXXX For each pubsub channel, its delivery strategy should be set at
* this XXXX point, using tor_mainloop_set_delivery_strategy().
*/
+ tor_mainloop_set_delivery_strategy("orconn", DELIV_IMMEDIATE);
+ tor_mainloop_set_delivery_strategy("ocirc", DELIV_IMMEDIATE);
}
}
diff --git a/src/app/main/ntmain.c b/src/app/main/ntmain.c
index c5a8122030..de82eeb1de 100644
--- a/src/app/main/ntmain.c
+++ b/src/app/main/ntmain.c
@@ -615,6 +615,7 @@ nt_service_install(int argc, char **argv)
&sidUse) == 0) {
/* XXXX For some reason, the above test segfaults. Fix that. */
printf("User \"%s\" doesn't seem to exist.\n", user_acct);
+ tor_free(command);
return -1;
} else {
printf("Will try to install service as user \"%s\".\n", user_acct);
diff --git a/src/app/main/shutdown.c b/src/app/main/shutdown.c
index cc0091a9ab..93d6351d1b 100644
--- a/src/app/main/shutdown.c
+++ b/src/app/main/shutdown.c
@@ -160,8 +160,6 @@ tor_free_all(int postfork)
subsystems_shutdown();
- tor_libevent_free_all();
-
/* Stuff in util.c and address.c*/
if (!postfork) {
esc_router_info(NULL);
diff --git a/src/app/main/subsystem_list.c b/src/app/main/subsystem_list.c
index f595796232..1af9340c1a 100644
--- a/src/app/main/subsystem_list.c
+++ b/src/app/main/subsystem_list.c
@@ -25,6 +25,7 @@
#include "lib/time/time_sys.h"
#include "lib/tls/tortls_sys.h"
#include "lib/wallclock/wallclock_sys.h"
+#include "lib/evloop/evloop_sys.h"
#include "feature/dirauth/dirauth_sys.h"
@@ -32,31 +33,38 @@
/**
* Global list of the subsystems in Tor, in the order of their initialization.
+ * Want to know the exact level numbers?
+ * We'll implement a level dump command in #31614.
**/
const subsys_fns_t *tor_subsystems[] = {
- &sys_winprocess, /* -100 */
- &sys_torerr, /* -100 */
- &sys_wallclock, /* -99 */
- &sys_threads, /* -95 */
- &sys_logging, /* -90 */
- &sys_time, /* -90 */
- &sys_network, /* -90 */
- &sys_compress, /* -70 */
- &sys_crypto, /* -60 */
- &sys_tortls, /* -50 */
- &sys_process, /* -35 */
-
- &sys_orconn_event, /* -33 */
- &sys_ocirc_event, /* -32 */
- &sys_btrack, /* -30 */
-
- &sys_mainloop, /* 5 */
- &sys_or, /* 20 */
-
- &sys_relay, /* 50 */
+ &sys_winprocess,
+ &sys_torerr,
+
+ &sys_wallclock,
+ &sys_threads,
+ &sys_logging,
+
+ &sys_time,
+ &sys_network,
+
+ &sys_compress,
+ &sys_crypto,
+ &sys_tortls,
+ &sys_process,
+
+ &sys_orconn_event,
+ &sys_ocirc_event,
+ &sys_btrack,
+
+ &sys_evloop,
+
+ &sys_mainloop,
+ &sys_or,
+
+ &sys_relay,
#ifdef HAVE_MODULE_DIRAUTH
- &sys_dirauth, /* 70 */
+ &sys_dirauth,
#endif
};