]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
timesync: assume link NTP servers are unchanged on error and no servers registered yet 39220/head
authorYu Watanabe <watanabe.yu+github@gmail.com>
Sun, 5 Oct 2025 19:03:39 +0000 (04:03 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Sun, 5 Oct 2025 19:49:53 +0000 (04:49 +0900)
This also silences annoying debug message when networkd is not running,
in which case sd_network_get_ntp() returns -ENOENT.

src/timesync/timesyncd-manager.c

index 004adf0b4ff1bd50d4999ec1cce8b861330c2bd6..6bfe4e075faffc9a01bc636d4ad89056ae323274 100644 (file)
@@ -966,19 +966,19 @@ Manager* manager_free(Manager *m) {
         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;
         }
 
@@ -1025,7 +1025,7 @@ static int manager_network_read_link_servers(Manager *m) {
 
 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) {
@@ -1043,7 +1043,6 @@ static int manager_network_event_handler(sd_event_source *s, int fd, uint32_t re
 
         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 */