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.
(cherry picked from commit a3aa9e6840fa0bc7a74f3cab7400dcb33ad4537a)
(cherry picked from commit ba1a925522bfb18123ad307321c1563a8dfca877)
diff --git a/src/haproxy-systemd-wrapper.c b/src/haproxy-systemd-wrapper.c
index ad74e0e..4e4d039 100644
--- a/src/haproxy-systemd-wrapper.c
+++ b/src/haproxy-systemd-wrapper.c
@@ -123,7 +123,8 @@
static void signal_handler(int signum)
{
- caught_signal = signum;
+ if (caught_signal != SIGINT && caught_signal != SIGTERM)
+ caught_signal = signum;
}
/* handles SIGUSR2 and SIGHUP only */