]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
2783. [func] Return minimal responses to EDNS/UDP queries with a UDP
authorMark Andrews <marka@isc.org>
Tue, 24 Nov 2009 03:15:54 +0000 (03:15 +0000)
committerMark Andrews <marka@isc.org>
Tue, 24 Nov 2009 03:15:54 +0000 (03:15 +0000)
                        buffer size of 512 or less.  [RT #20654]

CHANGES
bin/named/query.c

diff --git a/CHANGES b/CHANGES
index cba11b12ccd7e64526e870c62b13754d1ae0deb5..f57123f1f4045675ef84701e506cbfa6f487118f 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,6 @@
+2783.  [func]          Return minimal responses to EDNS/UDP queries with a UDP
+                       buffer size of 512 or less.  [RT #20654]
+
 2782.  [port]          win32: use getaddrinfo() for hostname lookups.
                        [RT #20650]
 
index b82b2164b187b07b649814a64d487f36cd0506ab..6a69a099a36b00358a50c23ab6438b37f8fa1534 100644 (file)
@@ -15,7 +15,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: query.c,v 1.298.48.17 2009/11/18 00:08:59 marka Exp $ */
+/* $Id: query.c,v 1.298.48.18 2009/11/24 03:15:54 marka Exp $ */
 
 /*! \file */
 
@@ -4727,6 +4727,14 @@ ns_query_start(ns_client_t *client) {
                client->query.attributes |= (NS_QUERYATTR_NOAUTHORITY |
                                             NS_QUERYATTR_NOADDITIONAL);
 
+       /*
+        * Turn on minimal responses for EDNS/UDP bufsize 512 queries.
+        */
+       if (client->opt != NULL && client->udpsize <= 512U &&
+           (client->attributes & NS_CLIENTATTR_TCP) == 0)
+               client->query.attributes |= (NS_QUERYATTR_NOAUTHORITY |
+                                            NS_QUERYATTR_NOADDITIONAL);
+
        /*
         * If the client has requested that DNSSEC checking be disabled,
         * allow lookups to return pending data and instruct the resolver