X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=server.c;h=1b3d724941802e0c1e5494e36c7cf01598a56e5a;hp=80cc8f46e36a6e70be2ed13da7bfcce6f5d5a27d;hb=48197733abe1f0ecf684085602fb5d5ea44a8a9d;hpb=7a0852896a75d852dbd2ac848ec5c0be3b5dea71 diff --git a/server.c b/server.c index 80cc8f46..1b3d7249 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: * @@ -166,7 +167,7 @@ void para_log(int ll, const char* fmt,...) fprintf(outfd, "%i: ", ll); mypid = getpid(); if (conf.loglevel_arg <= INFO) - fprintf(outfd, "(%d) ", mypid); + fprintf(outfd, "(%d) ", (int)mypid); va_start(argp, fmt); vfprintf(outfd, fmt, argp); va_end(argp); @@ -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); - ret += para_install_sighandler(SIGUSR1); - signal(SIGPIPE, SIG_IGN); - if (ret != 5) { - 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); }