commit 28c73ba99b0b295a986f42f6552f0b06b330a769 from: Omar Polo date: Tue Apr 04 14:11:37 2023 UTC catch SIGINT and SIGTERM too commit - f5b87db715f4a940223241126d03637cd47c7261 commit + 28c73ba99b0b295a986f42f6552f0b06b330a769 blob - 41c476b475546ae6f6922c86298dbe79f15fcaa2 blob + 807567d10dff2623e0912662721ea40bc963f1f2 --- msearchd/msearchd.c +++ msearchd/msearchd.c @@ -72,14 +72,14 @@ const struct logger dbglogger = { const struct logger *logger = &dbglogger; static void -handle_sigchld(int sig) +sighdlr(int sig) { - static volatile sig_atomic_t got_sigchld; + static volatile sig_atomic_t got_sig; int i, save_errno; - if (got_sigchld) + if (got_sig) return; - got_sigchld = -1; + got_sig = -1; save_errno = errno; for (i = 0; i < children; ++i) @@ -289,6 +289,8 @@ main(int argc, char **argv) sigemptyset(&set); sigaddset(&set, SIGCHLD); + sigaddset(&set, SIGINT); + sigaddset(&set, SIGTERM); sigprocmask(SIG_BLOCK, &set, NULL); ret = snprintf(sockp, sizeof(sockp), "%s/%s", root, sock); @@ -307,7 +309,9 @@ main(int argc, char **argv) (long long)pids[i]); } - signal(SIGCHLD, handle_sigchld); + signal(SIGINT, sighdlr); + signal(SIGTERM, sighdlr); + signal(SIGCHLD, sighdlr); signal(SIGHUP, SIG_IGN); sigprocmask(SIG_UNBLOCK, &set, NULL);