From: Gunnar Beutner Date: Sun, 29 Mar 2015 06:13:11 +0000 (+0200) Subject: Improve timeperiod validation error messages X-Git-Tag: v2.3.4~23 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a552e917b3221b2f99d639b7e3d7c285121afdf6;p=icinga2 Improve timeperiod validation error messages fixes #8893 --- diff --git a/lib/icinga/legacytimeperiod.cpp b/lib/icinga/legacytimeperiod.cpp index b346d3bc0..5c7d64b5f 100644 --- a/lib/icinga/legacytimeperiod.cpp +++ b/lib/icinga/legacytimeperiod.cpp @@ -289,11 +289,7 @@ void LegacyTimePeriod::ParseTimeRange(const String& timerange, tm *begin, tm *en String second = def.SubStr(pos + 1); second.Trim(); - try { - ParseTimeSpec(first, begin, NULL, reference); - } catch (std::exception&) { - throw; - } + ParseTimeSpec(first, begin, NULL, reference); /* If the second definition starts with a number we need * to add the first word from the first definition, e.g.: @@ -314,17 +310,9 @@ void LegacyTimePeriod::ParseTimeRange(const String& timerange, tm *begin, tm *en second = first.SubStr(0, xpos + 1) + second; } - try { - ParseTimeSpec(second, NULL, end, reference); - } catch (std::exception&) { - throw; - } + ParseTimeSpec(second, NULL, end, reference); } else { - try { - ParseTimeSpec(def, begin, end, reference); - } catch (std::exception&) { - throw; - } + ParseTimeSpec(def, begin, end, reference); } } @@ -381,11 +369,7 @@ Dictionary::Ptr LegacyTimePeriod::ProcessTimeRange(const String& timestamp, tm * { tm begin, end; - try { - ProcessTimeRangeRaw(timestamp, reference, &begin, &end); - } catch (std::exception&) { - throw; - } + ProcessTimeRangeRaw(timestamp, reference, &begin, &end); Dictionary::Ptr segment = new Dictionary(); segment->Set("begin", (long)mktime(&begin)); @@ -400,12 +384,7 @@ void LegacyTimePeriod::ProcessTimeRanges(const String& timeranges, tm *reference boost::algorithm::split(ranges, timeranges, boost::is_any_of(",")); BOOST_FOREACH(const String& range, ranges) { - Dictionary::Ptr segment; - try { - segment = ProcessTimeRange(range, reference); - } catch (std::exception&) { - throw; - } + Dictionary::Ptr segment = ProcessTimeRange(range, reference); if (segment->Get("begin") >= segment->Get("end")) continue; diff --git a/lib/icinga/scheduleddowntime.cpp b/lib/icinga/scheduleddowntime.cpp index 446e25281..6c4e7986e 100644 --- a/lib/icinga/scheduleddowntime.cpp +++ b/lib/icinga/scheduleddowntime.cpp @@ -199,16 +199,16 @@ void ScheduledDowntime::ValidateRanges(const String& location, const ScheduledDo tm begin_tm, end_tm; int stride; LegacyTimePeriod::ParseTimeRange(kv.first, &begin_tm, &end_tm, &stride, &reference); - } catch (std::exception&) { + } catch (const std::exception& ex) { BOOST_THROW_EXCEPTION(ScriptError("Validation failed for " + - location + ": Invalid time specification.", object->GetDebugInfo())); + location + ": Invalid time specification '" + kv.first + "': " + ex.what(), object->GetDebugInfo())); } try { LegacyTimePeriod::ProcessTimeRanges(kv.second, &reference, segments); - } catch (std::exception&) { + } catch (const std::exception& ex) { BOOST_THROW_EXCEPTION(ScriptError("Validation failed for " + - location + ": Invalid time range definition.", object->GetDebugInfo())); + location + ": Invalid time range definition '" + kv.second + "': " + ex.what(), object->GetDebugInfo())); } } } diff --git a/lib/icinga/timeperiod.cpp b/lib/icinga/timeperiod.cpp index 825e52e7c..1337390da 100644 --- a/lib/icinga/timeperiod.cpp +++ b/lib/icinga/timeperiod.cpp @@ -324,16 +324,16 @@ void TimePeriod::ValidateRanges(const String& location, const TimePeriod::Ptr& o tm begin_tm, end_tm; int stride; LegacyTimePeriod::ParseTimeRange(kv.first, &begin_tm, &end_tm, &stride, &reference); - } catch (std::exception&) { + } catch (const std::exception& ex) { BOOST_THROW_EXCEPTION(ScriptError("Validation failed for " + - location + ": Invalid time specification.", object->GetDebugInfo())); + location + ": Invalid time specification '" + kv.first + "': " + ex.what(), object->GetDebugInfo())); } try { LegacyTimePeriod::ProcessTimeRanges(kv.second, &reference, segments); - } catch (std::exception&) { + } catch (const std::exception& ex) { BOOST_THROW_EXCEPTION(ScriptError("Validation failed for " + - location + ": Invalid time range definition.", object->GetDebugInfo())); + location + ": Invalid time range definition '" + kv.second + "': " + ex.what(), object->GetDebugInfo())); } } }