From: Willy Tarreau Date: Wed, 7 Oct 2020 14:20:34 +0000 (+0200) Subject: MEDIUM: proxy: make stop_proxy() now use stop_listener() X-Git-Tag: v2.3-dev6~20 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=322b9b94e;p=thirdparty%2Fhaproxy.git MEDIUM: proxy: make stop_proxy() now use stop_listener() The function will stop the listeners using this method, which in turn will ping back once it finishes disabling the proxy. --- diff --git a/src/proxy.c b/src/proxy.c index 058e33131b..247ee6366c 100644 --- a/src/proxy.c +++ b/src/proxy.c @@ -1300,26 +1300,8 @@ void stop_proxy(struct proxy *p) HA_SPIN_LOCK(PROXY_LOCK, &p->lock); - list_for_each_entry(l, &p->conf.listeners, by_fe) { - if (l->options & LI_O_NOSTOP) - continue; - - /* There are several cases where we must not close an FD: - * - we're starting up and we have socket transfers enabled; - * - we're the master and this FD was inherited; - */ - if ((global.tune.options & GTUNE_SOCKET_TRANSFER && global.mode & MODE_STARTING) || - (master && (l->rx.flags & RX_F_INHERITED))) - unbind_listener_no_close(l); - else - unbind_listener(l); - - if (l->state >= LI_ASSIGNED) - delete_listener(l); - } - - if (p->li_ready + p->li_bound + p->li_paused == 0) - p->disabled = 1; + list_for_each_entry(l, &p->conf.listeners, by_fe) + stop_listener(l, 1, 0, 0); HA_SPIN_UNLOCK(PROXY_LOCK, &p->lock); }