]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: mworker: ensure that we still quits with SIGINT
authorWilliam Lallemand <wlallemand@haproxy.com>
Tue, 16 Apr 2019 15:42:44 +0000 (17:42 +0200)
committerWilly Tarreau <w@1wt.eu>
Tue, 16 Apr 2019 16:14:29 +0000 (18:14 +0200)
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

index 73e392801331ecd7e52ea65c8eb77466ce94e9cc..6b591d4eb3d11537b94f2e4be19d2a84faa9ca1e 100644 (file)
@@ -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");