From: Willy Tarreau Date: Thu, 24 Sep 2020 12:46:34 +0000 (+0200) Subject: MINOR: listeners: check the current listener state in pause_listener() X-Git-Tag: v2.3-dev6~46 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9b3a932777456197a601feaf4cf8311ec20a68a7;p=thirdparty%2Fhaproxy.git 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. --- diff --git a/src/listener.c b/src/listener.c index c4ee3c3190..6370a9f30b 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.