X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=server.c;h=8783f8e4569236589dea8e9bc476defd4f044d17;hp=93de8cc35d26c4e9f0e2277a236f47de905d5a6a;hb=8e01e0f249dbb131d70fbdb4adc651421278d3d8;hpb=b46dd218f90646441998f975c9b5515a5521c9d5 diff --git a/server.c b/server.c index 93de8cc3..8783f8e4 100644 --- a/server.c +++ b/server.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1997-2007 Andre Noll + * Copyright (C) 1997-2008 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ @@ -51,6 +51,7 @@ * - The object storage layer: \ref osl.c, * - Blob tables: \ref blob.c, * - The error subssystem: \ref error.h. + * - Access control for paraslash senders: \ref acl.c, \ref acl.h. * * Low-level data structures: * @@ -204,7 +205,7 @@ static void shm_init(void) mmd->sender_cmd_data.cmd_num = -1; return; err_out: - PARA_EMERG_LOG("%s", PARA_STRERROR(-ret)); + PARA_EMERG_LOG("%s", para_strerror(-ret)); exit(EXIT_FAILURE); } @@ -283,22 +284,26 @@ out: static void setup_signal_handling(void) { - int ret = 0; - - signal_pipe = para_signal_init(); + signal_pipe = para_signal_init(); /* always successful */ PARA_NOTICE_LOG("setting up signal handlers\n"); - ret += para_install_sighandler(SIGINT); - ret += para_install_sighandler(SIGTERM); - ret += para_install_sighandler(SIGHUP); - ret += para_install_sighandler(SIGCHLD); - signal(SIGPIPE, SIG_IGN); - signal(SIGUSR1, SIG_IGN); - if (ret != 4) { - PARA_EMERG_LOG("%s", "could not install signal handlers\n"); - exit(EXIT_FAILURE); - } + if (para_install_sighandler(SIGINT) < 0) + goto err; + if (para_install_sighandler(SIGTERM) < 0) + goto err; + if (para_install_sighandler(SIGHUP) < 0) + goto err; + if (para_install_sighandler(SIGCHLD) < 0) + goto err; + if (signal(SIGPIPE, SIG_IGN) == SIG_ERR) + goto err; + if (signal(SIGUSR1, SIG_IGN) == SIG_ERR) + goto err; add_close_on_fork_list(signal_pipe); + return; +err: + PARA_EMERG_LOG("could not install signal handlers\n"); + exit(EXIT_FAILURE); } static unsigned init_network(void) @@ -314,7 +319,7 @@ static unsigned init_network(void) add_close_on_fork_list(fd); /* child doesn't need the listener */ return fd; err: - PARA_EMERG_LOG("%s\n", PARA_STRERROR(-ret)); + PARA_EMERG_LOG("%s\n", para_strerror(-ret)); exit(EXIT_FAILURE); } @@ -394,11 +399,11 @@ static unsigned server_init(int argc, char **argv) PARA_NOTICE_LOG("initializing audio format handlers\n"); afh_init(); PARA_NOTICE_LOG("initializing virtual streaming system\n"); - vss_init(); mmd->server_pid = getpid(); setup_signal_handling(); PARA_NOTICE_LOG("initializing the audio file selector\n"); init_afs(); + vss_init(); mmd_lock(); /* init network socket */ PARA_NOTICE_LOG("initializing tcp command socket\n");