static RETSIGTYPE signal_cleanup(int signum) {
syslog(LOG_DEBUG, "sysdep: caught signal %d", signum);
- signal(signum, SIG_DFL);
+ signal(SIGINT, SIG_DFL);
+ signal(SIGHUP, SIG_DFL);
+ signal(SIGTERM, SIG_DFL);
+ signal(SIGSEGV, SIG_DFL);
exit_signal = signum;
server_shutting_down = 1;
+ master_cleanup(signum);
}
pid_t current_child;
-void graceful_shutdown(int signum) {
+void supervisor_process_shutdown(int signum) {
kill(current_child, signum);
unlink(file_pid_file);
exit(0);
do {
current_child = fork();
- signal(SIGTERM, graceful_shutdown);
+ signal(SIGTERM, supervisor_process_shutdown);
if (current_child < 0) {
perror("fork");
exit(errno);