From: Willy Tarreau Date: Sat, 14 Dec 2013 15:14:15 +0000 (+0100) Subject: BUG/MEDIUM: checks: ensure we can enable a server after boot X-Git-Tag: v1.5-dev20~20 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bb9665e6498bb93f7048cc900ae80ce350b54815;p=thirdparty%2Fhaproxy.git BUG/MEDIUM: checks: ensure we can enable a server after boot Since commit 58c3297 (MEDIUM: Set rise and fall of agent checks to 1), due to a bogus condition, it became impossible to re-enable a server that was disabled in the configuration if no agent was enabled. The reason is that in this case, the agent's health was zero while the condition expected it to be at least one to consider the action. Let's fix this by only considering the health of checks that are enabled. --- diff --git a/src/checks.c b/src/checks.c index 9fdf0603f7..7f195c9ea0 100644 --- a/src/checks.c +++ b/src/checks.c @@ -479,8 +479,9 @@ void set_server_up(struct check *check) { check->health = check->rise; } - if ((s->check.health >= s->check.rise && s->agent.health >= s->agent.rise && - check->health == check->rise) || s->track) { + if (s->track || + (s->check.health == s->check.rise && (s->agent.health >= s->agent.rise || !(s->agent.state & CHK_ST_ENABLED))) || + (s->agent.health == s->agent.rise && (s->check.health >= s->check.rise || !(s->check.state & CHK_ST_ENABLED)))) { if (s->proxy->srv_bck == 0 && s->proxy->srv_act == 0) { if (s->proxy->last_change < now.tv_sec) // ignore negative times s->proxy->down_time += now.tv_sec - s->proxy->last_change;