diff --git a/src/resolve/resolved-dns-scope.c b/src/resolve/resolved-dns-scope.c index cd5945eb00..d9d8acfd25 100644 --- a/src/resolve/resolved-dns-scope.c +++ b/src/resolve/resolved-dns-scope.c @@ -1365,7 +1365,17 @@ bool dns_scope_name_wants_search_domain(DnsScope *s, const char *name) { if (s->protocol != DNS_PROTOCOL_DNS) return false; - return dns_name_is_single_label(name); + if (!dns_name_is_single_label(name)) + return false; + + /* If we allow single-label domain lookups on unicast DNS, and this scope has a search domain that matches + * _exactly_ this name, then do not use search domains. */ + if (s->manager->resolve_unicast_single_label) + LIST_FOREACH(domains, d, dns_scope_get_search_domains(s)) + if (dns_name_equal(name, d->name) > 0) + return false; + + return true; } bool dns_scope_network_good(DnsScope *s) {