summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2019-03-13 19:26:27 +0100
committerLennart Poettering <lennart@poettering.net>2019-03-13 19:34:05 +0100
commitaa11cab98cf557c08a6910a1c91695213af33bba (patch)
treebc3c76816cdd9170ca99cbb5ec9b1bcf564f2cfc /src
parent6c8a2c679313f8283514923daf65f5e9d050d94c (diff)
downloadsystemd-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.c22
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,