From: Willy Tarreau Date: Mon, 23 Dec 2013 13:04:17 +0000 (+0100) Subject: BUG/MINOR: checks: successful check completion must not re-enable MAINT servers X-Git-Tag: v1.5-dev22~91 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9f708ab7070bce622d867eca3947256d50d9619d;p=thirdparty%2Fhaproxy.git BUG/MINOR: checks: successful check completion must not re-enable MAINT servers If a server is switched to maintenance mode while a check is in progress, the successful completion of the check must not switch it back up. This is still a consequence of using the same function set_server_up() for every state change. Bug reported by Igor at owind. This fix should be backported to 1.4 which is affected as well. --- diff --git a/src/checks.c b/src/checks.c index 115cc85584..bdb8f07ad7 100644 --- a/src/checks.c +++ b/src/checks.c @@ -1682,7 +1682,8 @@ static struct task *process_chk(struct task *t) set_server_disabled(check); } - if (check->health < check->rise + check->fall - 1) { + if (!(s->state & SRV_MAINTAIN) && + check->health < check->rise + check->fall - 1) { check->health++; /* was bad, stays for a while */ set_server_up(check); }