From befab9ee4aa2dfe0405d7f1416991175be2fbe67 Mon Sep 17 00:00:00 2001 From: William Lallemand Date: Thu, 25 Nov 2021 00:49:19 +0100 Subject: [PATCH] BUG/MINOR: mworker: does not add the -sf in wait mode Since the wait mode is automatically executed after charging the configuration, -sf was shown in argv[] with the previous PID, which is normal, but also the current one. This is only a visual problem when listing the processes, because -sf does not do anything in wait mode. Fix the issue by removing the whole "-sf" part in wait mode, but the executed command can be seen in the argv[] of the latest worker forked. Must be backported in 2.5. --- src/haproxy.c | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/src/haproxy.c b/src/haproxy.c index 343de6e4b0..4dbb283a78 100644 --- a/src/haproxy.c +++ b/src/haproxy.c @@ -720,26 +720,24 @@ static void mworker_reexec() /* insert the new options just after argv[0] in case we have a -- */ - /* add -sf * to argv */ - if (mworker_child_nb() > 0) { - struct mworker_proc *child; + if (getenv("HAPROXY_MWORKER_WAIT_ONLY") == NULL) { + /* add -sf * to argv */ + if (mworker_child_nb() > 0) { + struct mworker_proc *child; - next_argv[next_argc++] = "-sf"; + next_argv[next_argc++] = "-sf"; - list_for_each_entry(child, &proc_list, list) { - if (!(child->options & PROC_O_LEAVING) && (child->options & PROC_O_TYPE_WORKER)) - current_child = child; + list_for_each_entry(child, &proc_list, list) { + if (!(child->options & PROC_O_LEAVING) && (child->options & PROC_O_TYPE_WORKER)) + current_child = child; - if (!(child->options & (PROC_O_TYPE_WORKER|PROC_O_TYPE_PROG)) || child->pid <= -1 ) - continue; - if ((next_argv[next_argc++] = memprintf(&msg, "%d", child->pid)) == NULL) - goto alloc_error; - msg = NULL; + if (!(child->options & (PROC_O_TYPE_WORKER|PROC_O_TYPE_PROG)) || child->pid <= -1) + continue; + if ((next_argv[next_argc++] = memprintf(&msg, "%d", child->pid)) == NULL) + goto alloc_error; + msg = NULL; + } } - } - - - if (getenv("HAPROXY_MWORKER_WAIT_ONLY") == NULL) { if (current_child) { /* add the -x option with the socketpair of the current worker */ -- 2.47.3