From: Lennart Poettering Date: Wed, 13 Mar 2019 18:26:27 +0000 (+0100) Subject: resolved: don't follow cnames if we already noticed truncation X-Git-Tag: v242-rc1~133^2~2 X-Git-Url: http://git-history.diyao.me/?a=commitdiff_plain;h=aa11cab98cf557c08a6910a1c91695213af33bba;p=systemd%2F.git resolved: don't follow cnames if we already noticed truncation --- diff --git a/src/resolve/resolved-dns-stub.c b/src/resolve/resolved-dns-stub.c index 906bdc4bbb..4549fe0c72 100644 --- a/src/resolve/resolved-dns-stub.c +++ b/src/resolve/resolved-dns-stub.c @@ -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,