Since the fix "BUG/MINOR: mworker: don't exit with an ambiguous value"
we are leaving with a EXIT_SUCCESS upon a SIGINT.

We still need to quit with a SIGINT when a worker leaves with a SIGINT.

This is done this way because vtest expect a 130 during the process
stop, haproxy without mworker returns a 130, so it should be the same in
mworker mode.

This should be backported in 1.9, with the previous patch ("BUG/MINOR:
mworker: don't exit with an ambiguous value").

Code has moved, mworker_catch_sigchld() is in haproxy.c.
---
 src/mworker.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/mworker.c b/src/mworker.c
index 73e392801..6b591d4eb 100644
--- a/src/mworker.c
+++ b/src/mworker.c
@@ -275,10 +275,11 @@ restart_wait:
                                if (status != 0 && status != 130 && status != 
143
                                    && !(global.tune.options & 
GTUNE_NOEXIT_ONFAILURE)) {
                                        ha_alert("exit-on-failure: killing 
every processes with SIGTERM\n");
-                                       if (exitcode < 0)
-                                               exitcode = status;
                                        mworker_kill(SIGTERM);
                                }
+                               /* 0 & SIGTERM (143) are normal, but we should 
report SIGINT (130) and other signals */
+                               if (exitcode < 0 && status != 0 && status != 
143)
+                                       exitcode = status;
                        } else {
                                if (child->options & PROC_O_TYPE_WORKER) {
                                        ha_warning("Former worker #%d (%d) 
exited with code %d (%s)\n", child->relative_pid, exitpid, status, (status >= 
128) ? strsignal(status - 128) : "Exit");
-- 
2.21.0


Reply via email to