]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: mworker: wrong signals during startup
authorWilliam Lallemand <wlallemand@haproxy.com>
Tue, 18 Nov 2025 09:23:13 +0000 (10:23 +0100)
committerWilliam Lallemand <wlallemand@haproxy.com>
Tue, 18 Nov 2025 09:27:34 +0000 (10:27 +0100)
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.

src/haproxy.c

index e1e16878ccd9cfd6428aa15f4d0748584beaca15..52e60d39c5a779f60bf2be415467de3f171ca994 100644 (file)
@@ -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