]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - server.c
Allow switching between different log methods at runtime.
[paraslash.git] / server.c
index 0cfac60722d825fddb4714dfba651eb8265e770a..4650f9947f01ed7fd6f1323610090ae16ef22ac4 100644 (file)
--- a/server.c
+++ b/server.c
@@ -92,6 +92,8 @@
 #include "color.h"
 #include "version.h"
 
+__printf_2_3 void (*para_log)(int, const char*, ...) = daemon_log;
+
 /** Define the array of error lists needed by para_server. */
 INIT_SERVER_ERRLISTS;
 
@@ -491,10 +493,9 @@ static void server_init(int argc, char **argv)
        gettimeofday(now, NULL);
        set_server_start_time(now);
        init_user_list(user_list_file);
-       init_server_command_task(argc, argv);
        /* become daemon */
        if (conf.daemon_given)
-               daemonize();
+               daemonize(true /* parent waits for SIGTERM */);
        PARA_NOTICE_LOG("initializing audio format handlers\n");
        afh_init();
 
@@ -519,6 +520,9 @@ static void server_init(int argc, char **argv)
        para_unblock_signal(SIGCHLD);
        PARA_NOTICE_LOG("initializing virtual streaming system\n");
        init_vss_task(afs_socket);
+       init_server_command_task(argc, argv);
+       if (conf.daemon_given)
+               kill(getppid(), SIGTERM);
        PARA_NOTICE_LOG("server init complete\n");
 }