]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MEDIUM: checks: ensure we can enable a server after boot
authorWilly Tarreau <w@1wt.eu>
Sat, 14 Dec 2013 15:14:15 +0000 (16:14 +0100)
committerWilly Tarreau <w@1wt.eu>
Sat, 14 Dec 2013 15:14:15 +0000 (16:14 +0100)
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

index 9fdf0603f715f59b6d5f78fee7cab3fe83914637..7f195c9ea0db26fefc957820125c94391c5322dd 100644 (file)
@@ -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;