mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-11-28 06:11:32 +01:00
BUG/MINOR: systemd: ensure we don't miss signals
There's a race condition in the systemd wrapper. People who restart it too fast report old processes remaining there. Here if the signal is caught before entering the "while" loop we block indefinitely on the wait() call. Let's check the caught signal before calling wait(). It doesn't completely close the race, a window still exists between the test of the flag and the call to wait(), but it's much smaller. A safer solution could involve pselect() to wait for the signal delivery.
This commit is contained in:
parent
320ec2a745
commit
1ab5e8642a
@ -197,7 +197,7 @@ int main(int argc, char **argv)
|
||||
}
|
||||
|
||||
status = -1;
|
||||
while (-1 != wait(&status) || errno == EINTR) {
|
||||
while (caught_signal || wait(&status) != -1 || errno == EINTR) {
|
||||
if (caught_signal == SIGUSR2 || caught_signal == SIGHUP) {
|
||||
caught_signal = 0;
|
||||
do_restart();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user