X-Git-Url: https://jfr.im/git/irc/rqf/shadowircd.git/blobdiff_plain/212380e3f42f585dc1ea927402252eb943f91f7b..d25c6eb1b223d1a0993dde9a28c97ef95e54bceb:/src/ircd_signal.c diff --git a/src/ircd_signal.c b/src/ircd_signal.c index e910505..4ea20aa 100644 --- a/src/ircd_signal.c +++ b/src/ircd_signal.c @@ -24,9 +24,7 @@ #include "ircd_signal.h" #include "ircd.h" /* dorehash */ #include "restart.h" /* server_reboot */ -#include "s_log.h" -#include "memory.h" -#include "commio.h" +#include "logger.h" #include "s_conf.h" #include "client.h" #include "send.h" @@ -45,21 +43,21 @@ dummy_handler(int sig) static void sigchld_handler(int sig) { - int status; - waitpid(-1, &status, WNOHANG); + int status, olderrno; + + olderrno = errno; + while (waitpid(-1, &status, WNOHANG) > 0) + ; + errno = olderrno; } + /* * sigterm_handler - exit the server */ static void sigterm_handler(int sig) { - /* XXX we had a flush_connections() here - we should close all the - * connections and flush data. read server_reboot() for my explanation. - * -- adrian - */ - ilog(L_MAIN, "Server killed By SIGTERM"); - exit(-1); + ircd_shutdown("Received SIGTERM"); } /*