static RETSIGTYPE signal_cleanup(int signum) {
syslog(LOG_DEBUG, "sysdep: caught signal %d", signum);
+ signal(signum, SIG_DFL);
exit_signal = signum;
server_shutting_down = 1;
}
sigaddset(&set, SIGINT);
sigaddset(&set, SIGHUP);
sigaddset(&set, SIGTERM);
+ sigaddset(&set, SIGSEGV);
sigprocmask(SIG_UNBLOCK, &set, NULL);
signal(SIGINT, signal_cleanup);
signal(SIGHUP, signal_cleanup);
signal(SIGTERM, signal_cleanup);
+ signal(SIGSEGV, signal_cleanup);
// Do not shut down the server on broken pipe signals, otherwise the
// whole Citadel service would come down whenever a single client