From 597dc0dea26dc037584b1da9d982947ec59b4ad5 Mon Sep 17 00:00:00 2001 From: Gunnar Beutner Date: Mon, 8 Aug 2016 11:02:08 +0200 Subject: [PATCH] Fix incorrect behavior for max_check_attempts fixes #11898 --- lib/icinga/checkable-check.cpp | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/lib/icinga/checkable-check.cpp b/lib/icinga/checkable-check.cpp index a56554f63..299e9f216 100644 --- a/lib/icinga/checkable-check.cpp +++ b/lib/icinga/checkable-check.cpp @@ -177,9 +177,7 @@ void Checkable::ProcessCheckResult(const CheckResult::Ptr& cr, const MessageOrig std::set children = GetChildren(); - if (!old_cr) { - SetStateType(StateTypeSoft); - } else if (IsStateOK(cr->GetState())) { + if (IsStateOK(cr->GetState())) { SetStateType(StateTypeHard); // NOT-OK -> HARD OK if (!IsStateOK(old_state)) @@ -192,7 +190,7 @@ void Checkable::ProcessCheckResult(const CheckResult::Ptr& cr, const MessageOrig if (!children.empty()) OnReachabilityChanged(this, cr, children, origin); } else { - if (old_attempt >= GetMaxCheckAttempts()) { + if (old_attempt + 1 >= GetMaxCheckAttempts()) { SetStateType(StateTypeHard); } else if (old_stateType == StateTypeSoft && !IsStateOK(old_state)) { SetStateType(StateTypeSoft); @@ -284,9 +282,6 @@ void Checkable::ProcessCheckResult(const CheckResult::Ptr& cr, const MessageOrig send_notification = true; } - if (!old_cr) - send_notification = false; /* Don't send notifications for the initial state change */ - if (IsStateOK(old_state) && old_stateType == StateTypeSoft) send_notification = false; /* Don't send notifications for SOFT-OK -> HARD-OK. */