From f96a13e9e4cf417f1cfb7c1232908a4e06359ce3 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sun, 10 Jul 2022 12:48:42 +0530 Subject: [PATCH] mask handled signals when running signal handler --- prewarm-launcher.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/prewarm-launcher.c b/prewarm-launcher.c index 58c8fb4fe..3fd839b89 100644 --- a/prewarm-launcher.c +++ b/prewarm-launcher.c @@ -272,7 +272,14 @@ setup_signal_handler(void) { if (pipe(fds) != 0) return false; signal_read_fd = fds[0]; signal_write_fd = fds[1]; set_blocking(signal_write_fd, false); - struct sigaction act = {.sa_sigaction=handle_signal, .sa_flags=SA_SIGINFO | SA_RESTART}; + sigset_t masked_signals; + sigemptyset(&masked_signals); + sigaddset(&masked_signals, SIGWINCH); + sigaddset(&masked_signals, SIGINT); + sigaddset(&masked_signals, SIGTERM); + sigaddset(&masked_signals, SIGQUIT); + sigaddset(&masked_signals, SIGHUP); + struct sigaction act = {.sa_sigaction=handle_signal, .sa_flags=SA_SIGINFO | SA_RESTART, .sa_mask = masked_signals}; #define a(which) if (sigaction(which, &act, NULL) != 0) return false; a(SIGWINCH); a(SIGINT); a(SIGTERM); a(SIGQUIT); a(SIGHUP); #undef a