Currently, when service_set_main_pidref() is called
without specifying start_timestamp, exec_status_start()
always uses dual_timestamp_now(). This is not ideal,
though, as when the main pid changes halfway due to
e.g. sd_notify + MAINPID=, it's definitely spurious.
if (!pidref_equal(&s->main_pid, &pidref)) {
service_unwatch_main_pid(s);
+
+ dual_timestamp pid_start_time;
+
+ if (!start_timestamp) {
+ usec_t t;
+
+ if (pidref_get_start_time(&pidref, &t) >= 0)
+ start_timestamp = dual_timestamp_from_boottime(&pid_start_time, t);
+ }
+
exec_status_start(&s->main_exec_status, pidref.pid, start_timestamp);
}