summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2020-01-06 08:45:29 -0500
committerNick Mathewson <nickm@torproject.org>2020-01-06 09:22:57 -0500
commit54eec5342d45e9add5b9a8fee0167267c38f63f9 (patch)
tree594d32d736cfc5f0e8ce4caa8bc47740411a5b85
parentf5461a4bdf343a0572b0594fa33af37ce1be9d8f (diff)
downloadtor-54eec5342d45e9add5b9a8fee0167267c38f63f9.tar.gz
tor-54eec5342d45e9add5b9a8fee0167267c38f63f9.zip
Initialize publish/subscribe code when running as an NT service.
Fixes bug 32778; bugfix on 0.4.1.1-alpha.
-rw-r--r--changes/bug327783
-rw-r--r--src/app/main/main.c4
-rw-r--r--src/app/main/main.h3
-rw-r--r--src/app/main/ntmain.c7
4 files changed, 15 insertions, 2 deletions
diff --git a/changes/bug32778 b/changes/bug32778
new file mode 100644
index 0000000000..ccb6104692
--- /dev/null
+++ b/changes/bug32778
@@ -0,0 +1,3 @@
+ o Minor bugfixes (windows service):
+ - Initialize publish/subscribe system when running as a windows service.
+ Fixes bug 32778; bugfix on 0.4.1.1-alpha.
diff --git a/src/app/main/main.c b/src/app/main/main.c
index 6e325f0b10..f3772f86e4 100644
--- a/src/app/main/main.c
+++ b/src/app/main/main.c
@@ -1236,7 +1236,7 @@ run_tor_main_loop(void)
}
/** Install the publish/subscribe relationships for all the subsystems. */
-static void
+void
pubsub_install(void)
{
pubsub_builder_t *builder = pubsub_builder_new();
@@ -1248,7 +1248,7 @@ pubsub_install(void)
/** Connect the mainloop to its publish/subscribe message delivery events if
* appropriate, and configure the global channels appropriately. */
-static void
+void
pubsub_connect(void)
{
if (get_options()->command == CMD_RUN_TOR) {
diff --git a/src/app/main/main.h b/src/app/main/main.h
index 9dfaf4b8ef..76574a9071 100644
--- a/src/app/main/main.h
+++ b/src/app/main/main.h
@@ -25,4 +25,7 @@ int tor_init(int argc, char **argv);
int run_tor_main_loop(void);
+void pubsub_install(void);
+void pubsub_connect(void);
+
#endif /* !defined(TOR_MAIN_H) */
diff --git a/src/app/main/ntmain.c b/src/app/main/ntmain.c
index f00b712702..c5a8122030 100644
--- a/src/app/main/ntmain.c
+++ b/src/app/main/ntmain.c
@@ -283,7 +283,9 @@ nt_service_body(int argc, char **argv)
return;
}
+ pubsub_install();
r = tor_init(backup_argc, backup_argv);
+
if (r) {
/* Failed to start the Tor service */
r = NT_SERVICE_ERROR_TORINIT_FAILED;
@@ -294,6 +296,8 @@ nt_service_body(int argc, char **argv)
return;
}
+ pubsub_connect();
+
/* Set the service's status to SERVICE_RUNNING and start the main
* event loop */
service_status.dwCurrentState = SERVICE_RUNNING;
@@ -322,9 +326,12 @@ nt_service_main(void)
errmsg = format_win32_error(result);
printf("Service error %d : %s\n", (int) result, errmsg);
tor_free(errmsg);
+
+ pubsub_install();
if (result == ERROR_FAILED_SERVICE_CONTROLLER_CONNECT) {
if (tor_init(backup_argc, backup_argv))
return;
+ pubsub_connect();
switch (get_options()->command) {
case CMD_RUN_TOR:
run_tor_main_loop();