From 9b3a932777456197a601feaf4cf8311ec20a68a7 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Thu, 24 Sep 2020 14:46:34 +0200 Subject: [PATCH] MINOR: listeners: check the current listener state in pause_listener() It's better not to try to perform pause() actions on wrong states, so let's check this and make sure that all callers are now safe. This means that we must not try to pause a listener which is already paused (e.g. it could possibly fail if the pause operation isn't idempotent at the socket level), nor should we try it on earlier states. --- src/listener.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/listener.c b/src/listener.c index c4ee3c319..6370a9f30 100644 --- a/src/listener.c +++ b/src/listener.c @@ -343,6 +343,9 @@ int pause_listener(struct listener *l) !(proc_mask(l->rx.settings->bind_proc) & pid_bit)) goto end; + if (l->state <= LI_PAUSED) + goto end; + if (l->rx.proto->pause) { /* Returns < 0 in case of failure, 0 if the listener * was totally stopped, or > 0 if correctly paused.