timedated: flip internal status after executing operation

timedated would set the internal status before calling out to systemd to do
the actual change. When the operation was refused because of a SELinux denial,
the state kept in timedated would get out of sync, and the second call from
timedatectl would appear to succeed.

https://bugzilla.redhat.com/show_bug.cgi?id=1014315
This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2015-03-21 17:40:20 -04:00
parent 8e8ba79229
commit 192b98b8fe

View file

@ -646,8 +646,6 @@ static int method_set_ntp(sd_bus *bus, sd_bus_message *m, void *userdata, sd_bus
if (r == 0)
return 1;
c->use_ntp = ntp;
r = context_enable_ntp(c, bus, error);
if (r < 0)
return r;
@ -656,6 +654,8 @@ static int method_set_ntp(sd_bus *bus, sd_bus_message *m, void *userdata, sd_bus
if (r < 0)
return r;
c->use_ntp = ntp;
log_info("Set NTP to %s", c->use_ntp ? "enabled" : "disabled");
sd_bus_emit_properties_changed(bus, "/org/freedesktop/timedate1", "org.freedesktop.timedate1", "NTP", NULL);