server: Use para_sigaction() to install the temporary SIGCHLD handler.
[paraslash.git] / server.c
index 1e4caf08c90d0e04233a987f6e520e19850c20c5..c5c97612e7bc353c7ea18d49a17c6adafdadcca7 100644 (file)
--- a/server.c
+++ b/server.c
@@ -485,7 +485,7 @@ static void server_init(int argc, char **argv)
                .check_ambiguity = 0,
                .print_errors = 1
        };
-       int afs_socket;
+       int ret, afs_socket;
 
        valid_fd_012();
        init_random_seed();
@@ -523,8 +523,9 @@ static void server_init(int argc, char **argv)
         * forked off. Otherwise, para_server does not notice if afs dies before
         * the SIGCHLD handler has been installed by init_signal_task() below.
         */
-       if (signal(SIGCHLD, tmp_sigchld_handler) == SIG_ERR) {
-               PARA_EMERG_LOG("failed to install temporary SIGCHLD handler\n");
+       ret = para_sigaction(SIGCHLD, tmp_sigchld_handler);
+       if (ret < 0) {
+               PARA_EMERG_LOG("SIGCHLD: %s\n", para_strerror(-ret));
                exit(EXIT_FAILURE);
        }
        PARA_NOTICE_LOG("initializing the audio file selector\n");