From: Gunnar Beutner Date: Mon, 25 Jun 2012 13:54:50 +0000 (+0200) Subject: Bugfixes for the soft/hard state calculation. X-Git-Tag: v0.0.1~359 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0f5ea5b53befefffc2bbb6ba8bdce19975225669;p=icinga2 Bugfixes for the soft/hard state calculation. --- diff --git a/icinga/service.cpp b/icinga/service.cpp index cf9fc5d06..9df1c581e 100644 --- a/icinga/service.cpp +++ b/icinga/service.cpp @@ -102,7 +102,7 @@ void Service::SetCurrentCheckAttempt(long attempt) long Service::GetCurrentCheckAttempt(void) const { - long value = 0; + long value = 1; GetConfigObject()->GetTag("check_attempt", &value); return value; } @@ -135,24 +135,22 @@ void Service::ApplyCheckResult(const CheckResult& cr) { long attempt = GetCurrentCheckAttempt(); - if (GetState() == StateOK && cr.GetState() == StateOK) { - SetStateType(StateTypeHard); - SetCurrentCheckAttempt(0); - } else if (GetState() == StateOK && cr.GetState() != StateOK) { - attempt++; + if (cr.GetState() == StateOK) { + if (GetState() == StateOK) + SetStateType(StateTypeHard); + attempt = 1; + } else { if (attempt >= GetMaxCheckAttempts()) { SetStateType(StateTypeHard); - attempt = 0; - } else { + attempt = 1; + } else if (GetStateType() == StateTypeSoft || GetState() == StateOK) { SetStateType(StateTypeSoft); + attempt++; } - - SetCurrentCheckAttempt(attempt); - } else if (GetState() != StateOK && cr.GetState() == StateOK) { - SetState(StateOK); } + SetCurrentCheckAttempt(attempt); SetState(cr.GetState()); }