X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=server.c;h=0cfac60722d825fddb4714dfba651eb8265e770a;hp=120fea258a64fdd1bf91e1436f22ee5d7e00a7c0;hb=08be831b7b7e3e55d862eb988a604ccbde603403;hpb=96dc6e5b66b37d3bd0e0e4d35e39825f374b8b40 diff --git a/server.c b/server.c index 120fea25..0cfac607 100644 --- a/server.c +++ b/server.c @@ -466,12 +466,6 @@ static int init_afs(int argc, char **argv) return afs_server_socket[0]; } -__noreturn static void tmp_sigchld_handler(__a_unused int s) -{ - PARA_EMERG_LOG("caught early SIGCHLD\n"); - exit(EXIT_FAILURE); -} - static void server_init(int argc, char **argv) { struct server_cmdline_parser_params params = { @@ -497,6 +491,7 @@ 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(); @@ -512,17 +507,18 @@ static void server_init(int argc, char **argv) */ para_sigaction(SIGUSR1, SIG_IGN); /* - * We have to install a SIGCHLD handler before the afs process is being - * forked off. Otherwise, para_server does not notice if afs dies before - * the SIGCHLD handler has been installed by init_signal_task() below. + * We have to block SIGCHLD before the afs process is being forked off. + * Otherwise, para_server does not notice if afs dies before the + * SIGCHLD handler has been installed for the parent process by + * init_signal_task() below. */ - para_sigaction(SIGCHLD, tmp_sigchld_handler); + para_block_signal(SIGCHLD); PARA_NOTICE_LOG("initializing the audio file selector\n"); afs_socket = init_afs(argc, argv); init_signal_task(); + para_unblock_signal(SIGCHLD); PARA_NOTICE_LOG("initializing virtual streaming system\n"); init_vss_task(afs_socket); - init_server_command_task(argc, argv); PARA_NOTICE_LOG("server init complete\n"); }