From 24c928c8bd86f6899d39dd5cd04b3e50b4b993a8 Mon Sep 17 00:00:00 2001 From: William Lallemand Date: Tue, 14 Jan 2020 17:58:18 +0100 Subject: [PATCH] BUG/MEDIUM: mworker: remain in mworker mode during reload If you reload an haproxy started in master-worker mode with "master-worker" in the configuration, and no "-W" argument, the new process lost the fact that is was in master-worker mode resulting in weird behaviors. The bigest problem is that if it is reloaded with an bad configuration, the master will exits instead of remaining in waitpid mode. This problem was discovered in bug #443. Should be backported in every version using the master-worker mode. (as far as 1.8) --- src/haproxy.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/haproxy.c b/src/haproxy.c index 30c43c11b..05268e1e7 100644 --- a/src/haproxy.c +++ b/src/haproxy.c @@ -1496,6 +1496,10 @@ static void init(int argc, char **argv) memcpy(localpeer, hostname, (sizeof(hostname) > sizeof(localpeer) ? sizeof(localpeer) : sizeof(hostname)) - 1); setenv("HAPROXY_LOCALPEER", localpeer, 1); + /* we were in mworker mode, we should restart in mworker mode */ + if (getenv("HAPROXY_MWORKER_REEXEC") != NULL) + global.mode |= MODE_MWORKER; + /* * Initialize the previously static variables. */