timer: reenable TIMER_ACTIVE timers when restarted
A timer configured with OnActiveSec will start its associated unit again if the timer is stopped, then started. However, if the timer unit is restarted -- with "systemctl restart", say -- this does not occur. This commit ensures that TIMER_ACTIVE timers are re-enabled whenever the timer is started, even if that's within a restart job.
This commit is contained in:
parent
f32d2db140
commit
779042e772
|
@ -521,6 +521,7 @@ fail:
|
||||||
|
|
||||||
static int timer_start(Unit *u) {
|
static int timer_start(Unit *u) {
|
||||||
Timer *t = TIMER(u);
|
Timer *t = TIMER(u);
|
||||||
|
TimerValue *v;
|
||||||
|
|
||||||
assert(t);
|
assert(t);
|
||||||
assert(t->state == TIMER_DEAD || t->state == TIMER_FAILED);
|
assert(t->state == TIMER_DEAD || t->state == TIMER_FAILED);
|
||||||
|
@ -530,6 +531,11 @@ static int timer_start(Unit *u) {
|
||||||
|
|
||||||
t->last_trigger = DUAL_TIMESTAMP_NULL;
|
t->last_trigger = DUAL_TIMESTAMP_NULL;
|
||||||
|
|
||||||
|
/* Reenable all timers that depend on unit activation time */
|
||||||
|
LIST_FOREACH(value, v, t->values)
|
||||||
|
if (v->base == TIMER_ACTIVE)
|
||||||
|
v->disabled = false;
|
||||||
|
|
||||||
if (t->stamp_path) {
|
if (t->stamp_path) {
|
||||||
struct stat st;
|
struct stat st;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue