]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MEDIUM: proxy: properly stop backends
authorWilly Tarreau <w@1wt.eu>
Fri, 16 Oct 2020 13:10:11 +0000 (15:10 +0200)
committerWilly Tarreau <w@1wt.eu>
Fri, 16 Oct 2020 13:16:17 +0000 (15:16 +0200)
The proxy stopping mechanism was changed with commit 322b9b94e ("MEDIUM:
proxy: make stop_proxy() now use stop_listener()") so that it's now
entirely driven by the listeners. One thing was forgotten though, which
is that pure backends will not stop anymore since they don't have any
listener, and that it's necessary to stop them in order to stop the
health checks.

No backport is needed.

src/proxy.c

index 43c2362285c00ab5b1ecdd1014b07a881fc580f3..790d4d08025ec1898046b7581fc4b9d01f590a3e 100644 (file)
@@ -1315,6 +1315,11 @@ void stop_proxy(struct proxy *p)
        list_for_each_entry(l, &p->conf.listeners, by_fe)
                stop_listener(l, 1, 0, 0);
 
+       if (!p->disabled && !p->li_ready) {
+               /* might be just a backend */
+               p->disabled = 1;
+       }
+
        HA_SPIN_UNLOCK(PROXY_LOCK, &p->lock);
 }