From: Willy Tarreau Date: Tue, 10 Dec 2019 06:11:35 +0000 (+0100) Subject: BUG/MINOR: proxy: make soft_stop() also close FDs in LI_PAUSED state X-Git-Tag: v2.2-dev1~204 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=67878d7bdcb88683bdbf6fba851901a31f348eb8;p=thirdparty%2Fhaproxy.git BUG/MINOR: proxy: make soft_stop() also close FDs in LI_PAUSED state The proxies' soft_stop() function closes the FDs in all opened states except LI_PAUSED. This means that a transient error on a listener might cause it to turn back to the READY state if it happens exactly when a reload signal is received. This must be backported to all supported versions. --- diff --git a/src/proxy.c b/src/proxy.c index ebc6415bd4..1724766234 100644 --- a/src/proxy.c +++ b/src/proxy.c @@ -1134,10 +1134,10 @@ void soft_stop(void) if (p->state == PR_STSTOPPED && !LIST_ISEMPTY(&p->conf.listeners) && LIST_ELEM(p->conf.listeners.n, - struct listener *, by_fe)->state >= LI_ZOMBIE) { + struct listener *, by_fe)->state > LI_ASSIGNED) { struct listener *l; list_for_each_entry(l, &p->conf.listeners, by_fe) { - if (l->state >= LI_ZOMBIE) + if (l->state > LI_ASSIGNED) close(l->fd); l->state = LI_INIT; }