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 43c2362..790d4d0 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);
 }