]> granicus.if.org Git - icinga2/commitdiff
New event queue: handle empty filter
authorAlexander A. Klimov <alexander.klimov@icinga.com>
Fri, 5 Apr 2019 15:41:39 +0000 (17:41 +0200)
committerMichael Friedrich <michael.friedrich@icinga.com>
Thu, 25 Apr 2019 13:56:38 +0000 (15:56 +0200)
lib/remote/eventqueue.cpp

index 83c7c6fc1b71224044347046228ad6b2489f3f87..f4ede0426f1f728e45cfde518f7dfe85cef5be40 100644 (file)
@@ -145,7 +145,7 @@ EventQueueRegistry *EventQueueRegistry::GetInstance()
 }
 
 std::mutex EventsInbox::m_FiltersMutex;
-std::map<String, EventsInbox::Filter> EventsInbox::m_Filters;
+std::map<String, EventsInbox::Filter> EventsInbox::m_Filters ({{"", EventsInbox::Filter{1, nullptr}}});
 
 EventsRouter EventsRouter::m_Instance;
 
@@ -262,17 +262,19 @@ EventsFilter::operator bool()
 void EventsFilter::Push(Dictionary::Ptr event)
 {
        for (auto& perFilter : m_Inboxes) {
-               ScriptFrame frame(true);
-               frame.Sandboxed = true;
+               if (perFilter.first) {
+                       ScriptFrame frame(true);
+                       frame.Sandboxed = true;
 
-               try {
-                       if (!FilterUtility::EvaluateFilter(frame, perFilter.first.get(), event, "event")) {
+                       try {
+                               if (!FilterUtility::EvaluateFilter(frame, perFilter.first.get(), event, "event")) {
+                                       continue;
+                               }
+                       } catch (const std::exception& ex) {
+                               Log(LogWarning, "EventQueue")
+                                       << "Error occurred while evaluating event filter for queue: " << DiagnosticInformation(ex);
                                continue;
                        }
-               } catch (const std::exception& ex) {
-                       Log(LogWarning, "EventQueue")
-                               << "Error occurred while evaluating event filter for queue: " << DiagnosticInformation(ex);
-                       continue;
                }
 
                for (auto& inbox : perFilter.second) {