From ff4caaaeba731c0f96ba391a7837c877490596ba Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 13 Mar 2019 19:30:55 +0100 Subject: [PATCH] resolved: if we can't append EDNS OPT RR, then indicate truncation to stub client We do so for any other RR we can't add, do this here too. Fixes: #11625 --- src/resolve/resolved-dns-stub.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/resolve/resolved-dns-stub.c b/src/resolve/resolved-dns-stub.c index 4549fe0c725..2bf04db4c57 100644 --- a/src/resolve/resolved-dns-stub.c +++ b/src/resolve/resolved-dns-stub.c @@ -91,7 +91,14 @@ static int dns_stub_finish_reply_packet( assert(p); - if (!add_opt) { + if (add_opt) { + r = dns_packet_append_opt(p, ADVERTISE_DATAGRAM_SIZE_MAX, edns0_do, rcode, NULL); + if (r == -EMSGSIZE) /* Hit the size limit? then indicate truncation */ + tc = true; + else if (r < 0) + return r; + + } else { /* If the client can't to EDNS0, don't do DO either */ edns0_do = false; @@ -117,12 +124,6 @@ static int dns_stub_finish_reply_packet( 0 /* cd */, rcode)); - if (add_opt) { - r = dns_packet_append_opt(p, ADVERTISE_DATAGRAM_SIZE_MAX, edns0_do, rcode, NULL); - if (r < 0) - return r; - } - return 0; } -- 2.47.3