]> git.ipfire.org Git - thirdparty/systemd.git/blobdiff - src/resolve/resolved-etc-hosts.c
resolved: keep track of first names listed for each address in /etc/hosts
[thirdparty/systemd.git] / src / resolve / resolved-etc-hosts.c
index 6acae48c2ba2e947ffaa73ac000df066844f8e2b..aac7d986ba028e86a1aaf26ba0a56123c322a33b 100644 (file)
@@ -189,9 +189,18 @@ static int parse_line(EtcHosts *hosts, unsigned nr, const char *line) {
                                 return log_oom();
                 }
 
-                r = set_ensure_consume(&item->names, &dns_name_hash_ops_free, TAKE_PTR(name));
+                r = set_ensure_put(&item->names, &dns_name_hash_ops_free, name);
                 if (r < 0)
                         return log_oom();
+                if (r == 0) /* the name is already listed */
+                        continue;
+                /*
+                 * Keep track of the first name listed for this address.
+                 * This name will be used in responses as the canonical name.
+                 */
+                if (!item->canonical_name)
+                        item->canonical_name = name;
+                TAKE_PTR(name);
         }
 
         if (!found)