From: William Lallemand Date: Mon, 3 Dec 2018 19:34:44 +0000 (+0100) Subject: BUG/MEDIUM: mworker: stop proxies which have no listener in the master X-Git-Tag: v1.9-dev10~65 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2fd45fae46823bb2ce059e2e5ca4db40db1c49af;p=thirdparty%2Fhaproxy.git BUG/MEDIUM: mworker: stop proxies which have no listener in the master The previous code was only stopping the listeners in the master, not the entire proxy. Since we now have a polling loop in the master, there might be some side effects, indeed some things that are still initialized. For example the checks were still running. --- diff --git a/src/haproxy.c b/src/haproxy.c index 08ad7e5a2a..f8fba140fd 100644 --- a/src/haproxy.c +++ b/src/haproxy.c @@ -623,6 +623,8 @@ static void mworker_cleanlisteners() } for (curproxy = proxies_list; curproxy; curproxy = curproxy->next) { + int listen_in_master = 0; + list_for_each_entry_safe(l, l_next, &curproxy->conf.listeners, by_fe) { /* remove the listener, but not those we need in the master... */ if (!(l->options & LI_O_MWORKER)) { @@ -634,8 +636,13 @@ static void mworker_cleanlisteners() else unbind_listener(l); delete_listener(l); + } else { + listen_in_master = 1; } } + /* if the proxy shouldn't be in the master, we stop it */ + if (!listen_in_master) + curproxy->state = PR_STSTOPPED; } }