it is trivial to fall back to our own timestamp v2: use now() --- src/timedate/timedated.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/timedate/timedated.c b/src/timedate/timedated.c index 88d57e9..75b1f1b 100644 --- a/src/timedate/timedated.c +++ b/src/timedate/timedated.c @@ -551,6 +551,9 @@ static int method_set_time(sd_bus *bus, sd_bus_message *m, void *userdata, sd_bu if (c->use_ntp) return sd_bus_error_setf(error, BUS_ERROR_AUTOMATIC_TIME_SYNC_ENABLED, "Automatic time synchronization is enabled"); + /* this only gets used if dbus does not provide a timestamp */ + start = now(CLOCK_MONOTONIC); + r = sd_bus_message_read(m, "xbb", &utc, &relative, &interactive); if (r < 0) return r; @@ -592,7 +595,7 @@ static int method_set_time(sd_bus *bus, sd_bus_message *m, void *userdata, sd_bu r = sd_bus_message_get_monotonic_usec(m, &start); if (r < 0 && r != -ENODATA) return r; - if (r >= 0) + if (r >= 0 || r == -ENODATA) timespec_store(&ts, timespec_load(&ts) + (now(CLOCK_MONOTONIC) - start)); /* Set system clock */ -- 2.2.1.209.g41e5f3a _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel