From 19f8d037833f2426f0ea6b06279d669ed69fcfd1 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Mon, 4 Aug 2014 22:15:52 +0200 Subject: timer: order OnCalendar units after timer-sync.target if DefaultDependencies=no Avoids triggering timers prematurely on systems with significantly inaccurate clocks, or some embedded platforms that lack one entirely. --- src/core/timer.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/core/timer.c') diff --git a/src/core/timer.c b/src/core/timer.c index a5a33a6e6f..dc0f289c7a 100644 --- a/src/core/timer.c +++ b/src/core/timer.c @@ -95,6 +95,7 @@ static int timer_verify(Timer *t) { static int timer_add_default_dependencies(Timer *t) { int r; + TimerValue *v; assert(t); @@ -106,6 +107,15 @@ static int timer_add_default_dependencies(Timer *t) { r = unit_add_two_dependencies_by_name(UNIT(t), UNIT_AFTER, UNIT_REQUIRES, SPECIAL_SYSINIT_TARGET, NULL, true); if (r < 0) return r; + + LIST_FOREACH(value, v, t->values) { + if (v->base == TIMER_CALENDAR) { + r = unit_add_dependency_by_name(UNIT(t), UNIT_AFTER, SPECIAL_TIME_SYNC_TARGET, NULL, true); + if (r < 0) + return r; + break; + } + } } return unit_add_two_dependencies_by_name(UNIT(t), UNIT_BEFORE, UNIT_CONFLICTS, SPECIAL_SHUTDOWN_TARGET, NULL, true); -- cgit v1.2.3-54-g00ecf