From: William Lallemand Date: Tue, 16 Apr 2019 15:42:44 +0000 (+0200) Subject: BUG/MINOR: mworker: ensure that we still quits with SIGINT X-Git-Tag: v2.0-dev3~253 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=74f0ec3894d9f137415a7b209fc1a3f0f59e69d7;p=thirdparty%2Fhaproxy.git BUG/MINOR: mworker: ensure that we still quits with SIGINT 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. --- diff --git a/src/mworker.c b/src/mworker.c index 73e3928013..6b591d4eb3 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");