From 0f5ea5b53befefffc2bbb6ba8bdce19975225669 Mon Sep 17 00:00:00 2001 From: Gunnar Beutner Date: Mon, 25 Jun 2012 15:54:50 +0200 Subject: [PATCH] Bugfixes for the soft/hard state calculation. --- icinga/service.cpp | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) 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()); } -- 2.40.0