return mfree(m);
}
-static int manager_network_read_link_servers(Manager *m) {
+static bool manager_network_read_link_servers(Manager *m) {
_cleanup_strv_free_ char **ntp = NULL;
bool changed = false;
int r;
assert(m);
+ bool existing = m->link_servers;
+
r = sd_network_get_ntp(&ntp);
- if (r < 0 && r != -ENODATA) {
- if (r == -ENOMEM)
- log_oom();
- else
- log_debug_errno(r, "Failed to get link NTP servers: %m");
+ if (r < 0) {
+ if (!IN_SET(r, -ENOENT, -ENODATA))
+ log_error_errno(r, "Failed to get link NTP servers: %m");
goto clear;
}
clear:
manager_flush_server_names(m, SERVER_LINK);
- return r;
+ return existing; /* return true if there were existing servers. */
}
static bool manager_is_connected(Manager *m) {
sd_network_monitor_flush(m->network_monitor);
- /* When manager_network_read_link_servers() failed, we assume that the servers are changed. */
changed = manager_network_read_link_servers(m);
/* check if the machine is online */