]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
resolved: Increase size of TCP stub replies
authorVictor Tapia <victor.tapia@canonical.com>
Wed, 21 Nov 2018 13:01:04 +0000 (14:01 +0100)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Wed, 28 Nov 2018 13:06:36 +0000 (14:06 +0100)
DNS_PACKET_PAYLOAD_SIZE_MAX is limiting the size of the stub replies to
512 with EDNS off or 4096 with EDNS on, without checking the protocol
used. This makes TCP replies for clients without EDNS support to be
limited to 512, making the truncate flag useless if the query result is
bigger than 512 bytes.

This commit increases the size of TCP replies to DNS_PACKET_SIZE_MAX

Fixes: #10816
src/resolve/resolved-dns-packet.h

index 5ebaff33d710fab04f2c0e0af37b0783d9c6832d..008860b5d1d35d26aa3304f4f5feac3765cced0e 100644 (file)
@@ -117,11 +117,14 @@ static inline uint16_t DNS_PACKET_RCODE(DnsPacket *p) {
 
 static inline uint16_t DNS_PACKET_PAYLOAD_SIZE_MAX(DnsPacket *p) {
 
-        /* Returns the advertised maximum datagram size for replies, or the DNS default if there's nothing defined. */
+        /* Returns the advertised maximum size for replies, or the DNS default if there's nothing defined. */
 
         if (p->opt)
                 return MAX(DNS_PACKET_UNICAST_SIZE_MAX, p->opt->key->class);
 
+        if (p->ipproto == IPPROTO_TCP)
+                return DNS_PACKET_SIZE_MAX;
+
         return DNS_PACKET_UNICAST_SIZE_MAX;
 }