]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
timesync: ignore IPv6 addresses when the kernel does not support IPv6 25743/head
authorYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 14 Dec 2022 14:54:11 +0000 (23:54 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 14 Dec 2022 18:30:13 +0000 (03:30 +0900)
Fixes #25728.

src/timesync/timesyncd-manager.c

index 15a18217f728ccc5777ad49be6cbe8d1c2e4b7b0..c05a832316b7b3d249265541b790cb4d619bea03 100644 (file)
@@ -806,11 +806,6 @@ int manager_connect(Manager *m) {
         if (m->current_server_address && m->current_server_address->addresses_next)
                 manager_set_server_address(m, m->current_server_address->addresses_next);
         else {
-                static const struct addrinfo hints = {
-                        .ai_flags = AI_NUMERICSERV|AI_ADDRCONFIG,
-                        .ai_socktype = SOCK_DGRAM,
-                };
-
                 /* Hmm, we are through all addresses, let's look for the next host instead */
                 if (m->current_server_name && m->current_server_name->names_next)
                         manager_set_server_name(m, m->current_server_name->names_next);
@@ -878,6 +873,12 @@ int manager_connect(Manager *m) {
 
                 log_debug("Resolving %s...", m->current_server_name->string);
 
+                struct addrinfo hints = {
+                        .ai_flags = AI_NUMERICSERV|AI_ADDRCONFIG,
+                        .ai_socktype = SOCK_DGRAM,
+                        .ai_family = socket_ipv6_is_supported() ? AF_UNSPEC : AF_INET,
+                };
+
                 r = resolve_getaddrinfo(m->resolve, &m->resolve_query, m->current_server_name->string, "123", &hints, manager_resolve_handler, NULL, m);
                 if (r < 0)
                         return log_error_errno(r, "Failed to create resolver: %m");