From 4ded04b80df94a4655af52b64cbcd156394286fd Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Tue, 19 Nov 2019 10:30:08 +0100 Subject: [PATCH] fix(cron): consider scheduling precision in all time comparisons --- src/Cron.hs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Cron.hs b/src/Cron.hs index 5017e71d1..fe78ac694 100644 --- a/src/Cron.hs +++ b/src/Cron.hs @@ -207,13 +207,13 @@ nextCronMatch tz mPrev prec now c@Cron{..} = case notAfter of execRef ref wasExecd cronAbsolute = case execRef' ref wasExecd cronAbsolute of MatchAt t - | t <= ref -> MatchAsap + | t <= addUTCTime prec ref -> MatchAsap other -> other execRef' ref wasExecd cronAbsolute = case cronAbsolute of CronAsap -> MatchAt ref CronTimestamp{ cronTimestamp = localTimeToUTCTZ tz -> ts } - | ref <= ts || not wasExecd -> MatchAt ts + | ref <= addUTCTime prec ts || not wasExecd -> MatchAt ts | otherwise -> MatchNone CronCalendar{..} -> listToMatch $ do let @@ -341,7 +341,7 @@ nextCronMatch tz mPrev prec now c@Cron{..} = case notAfter of let localTimeOfDay = TimeOfDay (fromIntegral mCronHour) (fromIntegral mCronMinute) (fromIntegral mCronSecond) res = localTimeToUTCTZ tz LocalTime{..} - guard $ res >= ref + guard $ addUTCTime prec res >= ref return res CronNotScheduled -> MatchNone