]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
3561. [bug] dig: issue a warning if an EDNS query returns FORMERR
authorMark Andrews <marka@isc.org>
Wed, 1 May 2013 04:53:16 +0000 (14:53 +1000)
committerMark Andrews <marka@isc.org>
Wed, 1 May 2013 04:53:16 +0000 (14:53 +1000)
                        or NOTIMP.  Adjust usage message. [RT #33363]

CHANGES
bin/dig/dig.c

diff --git a/CHANGES b/CHANGES
index cdd53d6195fcc6def968c6433cdae40ec4333641..9ea6935f582e754c778fd1383db070acfe005dbd 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,6 @@
+3561.  [bug]           dig: issue a warning if an EDNS query returns FORMERR
+                       or NOTIMP.  Adjust usage message. [RT #33363]
+                       
 3560.  [bug]           isc-config.sh did not honour includedir and libdir
                        when set via configure. [RT #33345]
 
index 162fdf3ee5b893a6c15292ac358efb59ad1e3106..e0e066772907d39e8d4eebde5feaf88eb06b33c3 100644 (file)
@@ -188,7 +188,7 @@ help(void) {
 "                 +domain=###         (Set default domainname)\n"
 "                 +bufsize=###        (Set EDNS0 Max UDP packet size)\n"
 "                 +ndots=###          (Set NDOTS value)\n"
-"                 +edns=###           (Set EDNS version) [0]\n"
+"                 +[no]edns[=###]     (Set EDNS version) [0]\n"
 "                 +[no]search         (Set whether to use searchlist)\n"
 "                 +[no]showsearch     (Search with intermediate results)\n"
 "                 +[no]defname        (Ditto)\n"
@@ -562,6 +562,13 @@ printmessage(dig_query_t *query, dns_message_t *msg, isc_boolean_t headers) {
                                printf(";; WARNING: recursion requested "
                                       "but not available\n");
                }
+               if (msg != query->lookup->sendmsg &&
+                   query->lookup->edns != -1 && msg->opt == NULL &&
+                   (msg->rcode == dns_rcode_formerr ||
+                    msg->rcode == dns_rcode_notimp))
+                       printf("\n;; WARNING: EDNS query returned status "
+                              "%s - retry with '+noedns'\n",
+                              rcode_totext(msg->rcode));
                if (msg != query->lookup->sendmsg && extrabytes != 0U)
                        printf(";; WARNING: Messages has %u extra byte%s at "
                               "end\n", extrabytes, extrabytes != 0 ? "s" : "");
@@ -893,8 +900,10 @@ plus_option(char *option, isc_boolean_t is_batchfile,
                        lookup->edns = -1;
                        break;
                }
-               if (value == NULL)
-                       goto need_value;
+               if (value == NULL) {
+                       lookup->edns = 0;
+                       break;
+               }
                result = parse_uint(&num, value, 255, "edns");
                if (result != ISC_R_SUCCESS)
                        fatal("Couldn't parse edns");