diff --git a/src/resolve/resolved-dns-packet.h b/src/resolve/resolved-dns-packet.h index 5ebaff33d7..008860b5d1 100644 --- a/src/resolve/resolved-dns-packet.h +++ b/src/resolve/resolved-dns-packet.h @@ -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; }