X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=server.c;h=7f020c8f73f34674a0ff644aa84e73a9096962b1;hp=1e45eb3616a858091f98f42079d94251963a43ed;hb=4867d9a4948aadde4dd59436e1c5fb0fc141ba89;hpb=c29457cf28486bc455c437e300bcfd0c7582c605 diff --git a/server.c b/server.c index 1e45eb36..7f020c8f 100644 --- a/server.c +++ b/server.c @@ -434,7 +434,7 @@ err: exit(EXIT_FAILURE); } -static int init_afs(void) +static int init_afs(int argc, char **argv) { int ret, afs_server_socket[2]; pid_t afs_pid; @@ -448,6 +448,10 @@ static int init_afs(void) if (afs_pid < 0) exit(EXIT_FAILURE); if (afs_pid == 0) { /* child (afs) */ + int i; + for (i = argc - 1; i >= 0; i--) + memset(argv[i], 0, strlen(argv[i])); + sprintf(argv[0], "para_server (afs)"); close(afs_server_socket[0]); afs_init(afs_socket_cookie, afs_server_socket[1]); } @@ -487,10 +491,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(); @@ -510,11 +513,14 @@ static void server_init(int argc, char **argv) */ para_block_signal(SIGCHLD); PARA_NOTICE_LOG("initializing the audio file selector\n"); - afs_socket = init_afs(); + 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); + if (conf.daemon_given) + kill(getppid(), SIGTERM); PARA_NOTICE_LOG("server init complete\n"); }