From bb9665e6498bb93f7048cc900ae80ce350b54815 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Sat, 14 Dec 2013 16:14:15 +0100 Subject: [PATCH] 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. --- src/checks.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/checks.c b/src/checks.c index 9fdf0603f..7f195c9ea 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;