diff options
author | Lennart Poettering <lennart@poettering.net> | 2019-03-13 19:26:27 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2019-03-13 19:34:05 +0100 |
commit | aa11cab98cf557c08a6910a1c91695213af33bba (patch) | |
tree | bc3c76816cdd9170ca99cbb5ec9b1bcf564f2cfc /src | |
parent | 6c8a2c679313f8283514923daf65f5e9d050d94c (diff) | |
download | systemd-aa11cab98cf557c08a6910a1c91695213af33bba.tar.gz systemd-aa11cab98cf557c08a6910a1c91695213af33bba.tar.bz2 systemd-aa11cab98cf557c08a6910a1c91695213af33bba.zip |
resolved: don't follow cnames if we already noticed truncation
Diffstat (limited to 'src')
-rw-r--r-- | src/resolve/resolved-dns-stub.c | 22 |
1 files changed, 12 insertions, 10 deletions
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, |