From: William Lallemand Date: Wed, 21 Apr 2021 14:55:34 +0000 (+0200) Subject: BUG/MINOR: mworker: don't use oldpids[] anymore for reload X-Git-Tag: v2.4-dev17~24 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=aba7f8b3132de3b29efe634cad8fb574f259549b;p=thirdparty%2Fhaproxy.git BUG/MINOR: mworker: don't use oldpids[] anymore for reload Since commit 3f12887 ("MINOR: mworker: don't use children variable anymore"), the oldpids array is not used anymore to generate the new -sf parameters. So we don't need to set nb_oldpids to 0 during the first start of the master process. This patch fixes a bug when 2 masters process tries to synchronize their peers, there is a small chances that it won't work because nb_oldpids equals 0. Should be backported as far as 2.0. --- diff --git a/src/haproxy.c b/src/haproxy.c index edc6d6501a..ecc5f2135c 100644 --- a/src/haproxy.c +++ b/src/haproxy.c @@ -555,7 +555,7 @@ void mworker_reload() old_argc++; /* 1 for haproxy -sf, 2 for -x /socket */ - next_argv = calloc(old_argc + 1 + 2 + mworker_child_nb() + nb_oldpids + 1, + next_argv = calloc(old_argc + 1 + 2 + mworker_child_nb() + 1, sizeof(*next_argv)); if (next_argv == NULL) goto alloc_error; @@ -2817,12 +2817,6 @@ int main(int argc, char **argv) if ((global.mode & MODE_MWORKER) && !(global.mode & MODE_MWORKER_WAIT)) mworker_kill_max_reloads(SIGTERM); - if ((global.mode & MODE_MWORKER) && (getenv("HAPROXY_MWORKER_REEXEC") == NULL)) { - nb_oldpids = 0; - ha_free(&oldpids); - } - - /* Note that any error at this stage will be fatal because we will not * be able to restart the old pids. */