]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
resolved: don't follow cnames if we already noticed truncation
authorLennart Poettering <lennart@poettering.net>
Wed, 13 Mar 2019 18:26:27 +0000 (19:26 +0100)
committerLennart Poettering <lennart@poettering.net>
Wed, 13 Mar 2019 18:34:05 +0000 (19:34 +0100)
src/resolve/resolved-dns-stub.c

index 906bdc4bbbbc1ef7aa471ab746e8494d90f9a5a5..4549fe0c7256dc4d1c60131e93f4e2919a2c20ce 100644 (file)
@@ -189,17 +189,19 @@ static void dns_stub_query_complete(DnsQuery *q) {
                         break;
                 }
 
-                r = dns_query_process_cname(q);
-                if (r == -ELOOP) {
-                        (void) dns_stub_send_failure(q->manager, q->request_dns_stream, q->request_dns_packet, DNS_RCODE_SERVFAIL, false);
-                        break;
-                }
-                if (r < 0) {
-                        log_debug_errno(r, "Failed to process CNAME: %m");
-                        break;
+                if (!truncated) {
+                        r = dns_query_process_cname(q);
+                        if (r == -ELOOP) {
+                                (void) dns_stub_send_failure(q->manager, q->request_dns_stream, q->request_dns_packet, DNS_RCODE_SERVFAIL, false);
+                                break;
+                        }
+                        if (r < 0) {
+                                log_debug_errno(r, "Failed to process CNAME: %m");
+                                break;
+                        }
+                        if (r == DNS_QUERY_RESTARTED)
+                                return;
                 }
-                if (r == DNS_QUERY_RESTARTED)
-                        return;
 
                 r = dns_stub_finish_reply_packet(
                                 q->reply_dns_packet,