mirror of
https://github.com/haproxy/haproxy.git
synced 2026-04-28 17:49:36 -04:00
BUG/MINOR: external-checks: do not unblock undesired signals
The external checks code makes use of block_sigchld() and unblock_sigchld() to ensure nobody modifies the signals list while they're being manipulated. It happens that these functions clear the list of blocked signals, so they can possibly have a side effect if other signals are blocked. For now no other signal is blocked but it may very well change in the future so rather correctly use SIG_BLOCK/SIG_UNBLOCK instead of touching unrelated signals. This fix should be backported to 1.6 for correctness.
This commit is contained in:
parent
48d6bf2e82
commit
ebc9244059
1 changed files with 3 additions and 2 deletions
|
|
@ -1541,14 +1541,15 @@ void block_sigchld(void)
|
|||
sigset_t set;
|
||||
sigemptyset(&set);
|
||||
sigaddset(&set, SIGCHLD);
|
||||
assert(sigprocmask(SIG_SETMASK, &set, NULL) == 0);
|
||||
assert(sigprocmask(SIG_BLOCK, &set, NULL) == 0);
|
||||
}
|
||||
|
||||
void unblock_sigchld(void)
|
||||
{
|
||||
sigset_t set;
|
||||
sigemptyset(&set);
|
||||
assert(sigprocmask(SIG_SETMASK, &set, NULL) == 0);
|
||||
sigaddset(&set, SIGCHLD);
|
||||
assert(sigprocmask(SIG_UNBLOCK, &set, NULL) == 0);
|
||||
}
|
||||
|
||||
/* Call with SIGCHLD blocked */
|
||||
|
|
|
|||
Loading…
Reference in a new issue