From a3aa9e6840fa0bc7a74f3cab7400dcb33ad4537a Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Sat, 27 Feb 2016 08:26:14 +0100 Subject: [PATCH] MINOR: systemd: ensure a reload doesn't mask a stop If a SIGHUP/SIGUSR2 is sent immediately after a SIGTERM/SIGINT and before wait() is notified, it will mask it since there's no queue, only a copy of the last received signal. Let's add a special check before overwriting the signal so that SIGTERM/SIGINT are not masked. --- src/haproxy-systemd-wrapper.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/haproxy-systemd-wrapper.c b/src/haproxy-systemd-wrapper.c index 0c076a6a4..d118ec6ff 100644 --- a/src/haproxy-systemd-wrapper.c +++ b/src/haproxy-systemd-wrapper.c @@ -123,7 +123,8 @@ static int read_pids(char ***pid_strv) static void signal_handler(int signum) { - caught_signal = signum; + if (caught_signal != SIGINT && caught_signal != SIGTERM) + caught_signal = signum; } /* handles SIGUSR2 and SIGHUP only */