From: Willy Tarreau Date: Wed, 21 Jul 2021 08:17:02 +0000 (+0200) Subject: BUG/MINOR: mworker: do not export HAPROXY_MWORKER_REEXEC across programs X-Git-Tag: v2.5-dev3~41 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=3c032f2d4d3ba508d508ae70603ccac6d5cf9d4a;p=thirdparty%2Fhaproxy.git BUG/MINOR: mworker: do not export HAPROXY_MWORKER_REEXEC across programs This undocumented variable is only for internal use, and its sole presence affects the process' behavior, as shown in bug #1324. It must not be exported to workers, external checks, nor programs. Let's unset it before forking programs and workers. This should be backported as far as 1.8. The worker code might differ a bit before 2.5 due to the recent removal of multi-process support. --- diff --git a/src/haproxy.c b/src/haproxy.c index fd5ef30615..5d3d928694 100644 --- a/src/haproxy.c +++ b/src/haproxy.c @@ -3183,6 +3183,8 @@ int main(int argc, char **argv) exit(1); /* there has been an error */ } else if (ret == 0) { /* child breaks here */ + /* This one must not be exported, it's internal! */ + unsetenv("HAPROXY_MWORKER_REEXEC"); ha_random_jump96(1); } else { /* parent here */ diff --git a/src/mworker-prog.c b/src/mworker-prog.c index 4a64662139..9de94a2894 100644 --- a/src/mworker-prog.c +++ b/src/mworker-prog.c @@ -110,6 +110,8 @@ int mworker_ext_launch_all() exit(1); } + /* This one must not be exported, it's internal! */ + unsetenv("HAPROXY_MWORKER_REEXEC"); execvp(child->command[0], child->command); ha_alert("Cannot execute %s: %s\n", child->command[0], strerror(errno));