]> granicus.if.org Git - icinga2/commitdiff
Fix: Timeperiods: legacy-timeperiod parsed empty, results in skipped checks
authorGunnar Beutner <gunnar.beutner@netways.de>
Mon, 24 Jun 2013 13:01:23 +0000 (15:01 +0200)
committerGunnar Beutner <gunnar.beutner@netways.de>
Mon, 24 Jun 2013 13:01:23 +0000 (15:01 +0200)
Fixes #4336

lib/icinga/legacytimeperiod.cpp

index b9bcdaeb06d3a9f31c6430d0d08dd692e1399978..67d4d01566da9f1dbf07fb35200601aa576edea8 100644 (file)
@@ -46,7 +46,7 @@ bool LegacyTimePeriod::IsInTimeRange(tm *begin, tm *end, int stride, tm *referen
 
        int daynumber = (tsref - tsbegin) / (24 * 60 * 60);
 
-       if (daynumber % stride == 0)
+       if (stride > 1 && daynumber % stride == 0)
                return false;
 
        return true;
@@ -324,6 +324,8 @@ bool LegacyTimePeriod::IsInDayDefinition(const String& daydef, tm *reference)
 
        ParseTimeRange(daydef, &begin, &end, &stride, reference);
 
+       Log(LogDebug, "icinga", "ParseTimeRange: '" + daydef + "' => " + Convert::ToString(mktime(&begin)) + " -> " + Convert::ToString(mktime(&end)) + ", stride: " + Convert::ToString(stride));
+
        return IsInTimeRange(&begin, &end, stride, reference);
 }
 
@@ -389,6 +391,8 @@ Array::Ptr LegacyTimePeriod::ScriptFunc(const TimePeriod::Ptr& tp, double begin,
                        time_t refts = begin + i * 24 * 60 * 60;
                        tm reference;
 
+                       Log(LogDebug, "icinga", "Checking reference time " + Convert::ToString(refts));
+
 #ifdef _MSC_VER
                        tm *temp = localtime(&refts);
 
@@ -411,8 +415,12 @@ Array::Ptr LegacyTimePeriod::ScriptFunc(const TimePeriod::Ptr& tp, double begin,
                        String key;
                        Value value;
                        BOOST_FOREACH(boost::tie(key, value), ranges) {
-                               if (!IsInDayDefinition(key, &reference))
+                               if (!IsInDayDefinition(key, &reference)) {
+                                       Log(LogDebug, "icinga", "Not in day definition '" + key + "'.");
                                        continue;
+                               }
+
+                               Log(LogDebug, "icinga", "In day definition '" + key + "'.");
 
                                ProcessTimeRanges(value, &reference, segments);
                        }