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.
This commit is contained in:
Willy Tarreau 2019-12-10 07:11:35 +01:00
parent f950c2e97e
commit 67878d7bdc

View File

@ -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;
}