diff --git a/lib/icinga/downtime.cpp b/lib/icinga/downtime.cpp index 1b0781344..6bd81f72f 100644 --- a/lib/icinga/downtime.cpp +++ b/lib/icinga/downtime.cpp @@ -487,6 +487,8 @@ void Downtime::SetupCleanupTimer() void Downtime::TriggerDowntime(double triggerTime) { + ObjectLock oLock (this); + if (!CanBeTriggered()) return; @@ -499,10 +501,9 @@ void Downtime::TriggerDowntime(double triggerTime) SetTriggerTime(triggerTime); } - { - ObjectLock olock (this); - SetupCleanupTimer(); - } + SetupCleanupTimer(); + OnDowntimeTriggered(this); + oLock.Unlock(); Array::Ptr triggers = GetTriggers(); @@ -517,8 +518,6 @@ void Downtime::TriggerDowntime(double triggerTime) downtime->TriggerDowntime(triggerTime); } } - - OnDowntimeTriggered(this); } void Downtime::SetRemovalInfo(const String& removedBy, double removeTime, const MessageOrigin::Ptr& origin) {