mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-03-31 23:58:16 +00:00
BUG/MINOR: signal: register default handler for SIGINT in signal_init()
When haproxy is launched in a background and in a subshell (see example below), according to POSIX standard (2.11. Signals and Error Handling), it inherits from the subshell SIG_IGN signal handler for SIGINT and SIGQUIT. $ (./haproxy -f env4.cfg &) So, when haproxy is lanched like this, it doesn't stop upon receiving the SIGINT. This can be a root cause of some unexpected timeouts, when haproxy is started under VTest, as VTest sends to the process SIGINT in order to terminate it. To fix this, let's explicitly register the default signal handler for the SIGINT in signal_init() initcall. This should be backported in all stable versions.
This commit is contained in:
parent
70b5cd6794
commit
d3c20b0246
@ -106,6 +106,13 @@ static void signal_init()
|
||||
{
|
||||
int sig;
|
||||
|
||||
/* Need to register the handler for SIGINT explicitly, as we can be
|
||||
* laucned within the subshell and at background:
|
||||
* $ (./haproxy -f env4.cfg &). According to POSIX standard
|
||||
* (2.11. Signals and Error Handling), we will inherit from the subshell
|
||||
* in this case SIG_IGN signal handler for SIGINT and SIGQUIT.
|
||||
*/
|
||||
signal(SIGINT, SIG_DFL);
|
||||
signal_queue_len = 0;
|
||||
memset(signal_queue, 0, sizeof(signal_queue));
|
||||
memset(signal_state, 0, sizeof(signal_state));
|
||||
|
Loading…
Reference in New Issue
Block a user