BUG/MINOR: tcpcheck: Update .health threshold of agent inside an agent-check

If an agent-check is configured for a server, When the response is parsed,
the .health threshold of the agent must be updated on up/down/stopped/fail
command and not the threshold of the health-check. Otherwise, the
agent-check will compete with the health-check and may mark a DOWN server as
UP.

This patch should fix the issue #1176. It must be backported as far as 2.2.
This commit is contained in:
Christopher Faulet 2021-03-12 09:06:07 +01:00
parent 5647fbacdf
commit 24ec943427

View File

@ -836,22 +836,22 @@ enum tcpcheck_eval_ret tcpcheck_agent_expect_reply(struct check *check, struct t
/* first, health statuses */
if (strcasecmp(cmd, "up") == 0) {
check->server->check.health = check->server->check.rise + check->server->check.fall - 1;
check->health = check->rise + check->fall - 1;
status = HCHK_STATUS_L7OKD;
hs = cmd;
}
else if (strcasecmp(cmd, "down") == 0) {
check->server->check.health = 0;
check->health = 0;
status = HCHK_STATUS_L7STS;
hs = cmd;
}
else if (strcasecmp(cmd, "stopped") == 0) {
check->server->check.health = 0;
check->health = 0;
status = HCHK_STATUS_L7STS;
hs = cmd;
}
else if (strcasecmp(cmd, "fail") == 0) {
check->server->check.health = 0;
check->health = 0;
status = HCHK_STATUS_L7STS;
hs = cmd;
}