core/timer: reset next_elapse_*time when timer is not waiting
When the unit that is triggered by a timer is started and running, we transition to "running" state, and the timer will not elapse again until the unit has finished running. In this state "systemctl list-timers" would display the previously calculated next elapse time, which would now of course be in the past, leading to nonsensical values. Simply set the next elapse to infinity, which causes list-timers to show n/a. We cannot specify when the next elapse will happen, possibly never. Fixes #4031.
This commit is contained in:
@@ -261,6 +261,8 @@ static void timer_set_state(Timer *t, TimerState state) {
|
||||
if (state != TIMER_WAITING) {
|
||||
t->monotonic_event_source = sd_event_source_unref(t->monotonic_event_source);
|
||||
t->realtime_event_source = sd_event_source_unref(t->realtime_event_source);
|
||||
t->next_elapse_monotonic_or_boottime = USEC_INFINITY;
|
||||
t->next_elapse_realtime = USEC_INFINITY;
|
||||
}
|
||||
|
||||
if (state != old_state)
|
||||
|
||||
Reference in New Issue
Block a user