From 67878d7bdcb88683bdbf6fba851901a31f348eb8 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Tue, 10 Dec 2019 07:11:35 +0100 Subject: [PATCH] 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. --- src/proxy.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/proxy.c b/src/proxy.c index ebc6415bd..172476623 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; } -- 2.47.3