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 9fdf060..7f195c9 100644
--- a/src/checks.c
+++ b/src/checks.c
@@ -479,8 +479,9 @@
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;