From 2d6ed4c9bef7408d525bcd45ff0f4780e6a8018d Mon Sep 17 00:00:00 2001 From: Gunnar Beutner Date: Tue, 22 Jul 2014 14:13:21 +0200 Subject: [PATCH] Make sure that event handlers are run for hard recoveries fixes #6686 --- lib/icinga/checkable-check.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/icinga/checkable-check.cpp b/lib/icinga/checkable-check.cpp index 4efc0faa6..7ec2393c0 100644 --- a/lib/icinga/checkable-check.cpp +++ b/lib/icinga/checkable-check.cpp @@ -250,7 +250,7 @@ void Checkable::ProcessCheckResult(const CheckResult::Ptr& cr, const MessageOrig ServiceState old_state = GetStateRaw(); StateType old_stateType = GetStateType(); long old_attempt = GetCheckAttempt(); - bool recovery; + bool recovery = false; if (old_cr && cr->GetExecutionStart() < old_cr->GetExecutionStart()) return; @@ -264,7 +264,6 @@ void Checkable::ProcessCheckResult(const CheckResult::Ptr& cr, const MessageOrig long attempt = 1; if (!old_cr) { - recovery = false; SetStateType(StateTypeHard); } else if (cr->GetState() == ServiceOK) { if (old_state == ServiceOK && old_stateType == StateTypeSoft) { @@ -272,6 +271,9 @@ void Checkable::ProcessCheckResult(const CheckResult::Ptr& cr, const MessageOrig recovery = true; } + if (old_state != ServiceOK) + recovery = true; // NOT OK -> SOFT/HARD OK + ResetNotificationNumbers(); SetLastStateOK(Utility::GetTime()); } else { @@ -284,8 +286,6 @@ void Checkable::ProcessCheckResult(const CheckResult::Ptr& cr, const MessageOrig attempt = old_attempt; } - recovery = false; - switch (cr->GetState()) { case ServiceOK: /* Nothing to do here. */ -- 2.40.0