From: William Lallemand Date: Tue, 18 Nov 2025 09:23:13 +0000 (+0100) Subject: BUG/MINOR: mworker: wrong signals during startup X-Git-Tag: v3.3-dev14~43 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=9bf01a0d296b6f1a4de4f932ae8e7f250a58fa25;p=thirdparty%2Fhaproxy.git BUG/MINOR: mworker: wrong signals during startup Since the new master-worker model in 3.1, signals are registered in step_init_3(). However, those signals were supposed to be registered only for the worker or the standalone mode. It would call the wrong callback in the master even during configuration parsing. The patch set the signals handler to NULL for the master so it does nothing until they really are registered. Must be backported as far as 3.1. --- diff --git a/src/haproxy.c b/src/haproxy.c index e1e16878c..52e60d39c 100644 --- a/src/haproxy.c +++ b/src/haproxy.c @@ -2452,11 +2452,17 @@ static void step_init_2(int argc, char** argv) */ static void step_init_3(void) { - - signal_register_fct(SIGQUIT, dump, SIGQUIT); - signal_register_fct(SIGUSR1, sig_soft_stop, SIGUSR1); - signal_register_fct(SIGHUP, sig_dump_state, SIGHUP); - signal_register_fct(SIGUSR2, NULL, 0); + if (master) { + signal_register_fct(SIGQUIT, NULL, 0); + signal_register_fct(SIGUSR1, NULL, 0); + signal_register_fct(SIGHUP, NULL, 0); + signal_register_fct(SIGUSR2, NULL, 0); + } else { + signal_register_fct(SIGQUIT, dump, SIGQUIT); + signal_register_fct(SIGUSR1, sig_soft_stop, SIGUSR1); + signal_register_fct(SIGHUP, sig_dump_state, SIGHUP); + signal_register_fct(SIGUSR2, NULL, 0); + } /* Always catch SIGPIPE even on platforms which define MSG_NOSIGNAL. * Some recent FreeBSD setups report broken pipes, and MSG_NOSIGNAL