]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
resolved: don't follow the global search list on local scopes
authorLennart Poettering <lennart@poettering.net>
Thu, 26 Nov 2015 23:06:19 +0000 (00:06 +0100)
committerLennart Poettering <lennart@poettering.net>
Thu, 26 Nov 2015 23:06:19 +0000 (00:06 +0100)
It probably doesn't make sense to mix local and global configuration.
Applying global search lists to local DNS servers appears unnecessary
and creates problems because we'll traverse the search domains
non-simultaneously on multiple scopes.

Also see:

https://github.com/systemd/systemd/pull/2031

src/resolve/resolved-dns-query.c

index fe99caff371bf59a3141dd3540e529878994fd26..a96cf439adc60af72de25a3a09983b0222914f4c 100644 (file)
@@ -94,31 +94,19 @@ static int dns_query_candidate_next_search_domain(DnsQueryCandidate *c) {
         if (c->search_domain && c->search_domain->linked) {
                 next = c->search_domain->domains_next;
 
-                if (!next) {
-                        /* We hit the last entry. Let's see if this
-                         * was the per-link search domain list. If so,
-                         * let's continue with the global one. */
-
-                        if (c->search_domain->type == DNS_SEARCH_DOMAIN_LINK)
-                                next = c->query->manager->search_domains;
-
-                        if (!next) /* Still no item? Then we really hit the end of the list. */
-                                return 0;
-                }
+                if (!next) /* We hit the end of the list */
+                        return 0;
 
         } else {
-                /* If we have, start with the per-link domains */
                 next = dns_scope_get_search_domains(c->scope);
 
-                if (!next) /* Fall back to the global search domains */
-                        next = c->scope->manager->search_domains;
-
-                if (!next) /* OK, there's really nothing. */
+                if (!next) /* OK, there's nothing. */
                         return 0;
         }
 
         dns_search_domain_unref(c->search_domain);
         c->search_domain = dns_search_domain_ref(next);
+
         return 1;
 }