]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
3919. [bug] dig: continue to next line if a address lookup fails
authorMark Andrews <marka@isc.org>
Fri, 22 Aug 2014 05:32:47 +0000 (15:32 +1000)
committerMark Andrews <marka@isc.org>
Fri, 22 Aug 2014 05:33:22 +0000 (15:33 +1000)
                        in batch mode. [RT #36755]

(cherry picked from commit adb503242bc427972afb9bf012e8e2af30852b5a)

CHANGES
bin/dig/dig.c

diff --git a/CHANGES b/CHANGES
index b7f25d792ee72967eadabec27b21660e63a91bbd..17c7ceb42ab5fc0ea50cccd621ad7d47d837eb5b 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,6 @@
+3919.  [bug]           dig: continue to next line if a address lookup fails
+                       in batch mode. [RT #36755]
+                       
 3918.  [doc]           Update check-spf documentation. [RT #36910]
 
 3917.  [bug]           dig, nslookup and host now continue on names that are
index c240c412effe20dea24f2b2261528d0ea0358066..9a6f0f95941f103b38d97def800891c40350e86c 100644 (file)
@@ -1605,7 +1605,8 @@ preparse_args(int argc, char **argv) {
 
 static void
 parse_args(isc_boolean_t is_batchfile, isc_boolean_t config_only,
-          int argc, char **argv) {
+          int argc, char **argv)
+{
        isc_result_t result;
        isc_textregion_t tr;
        isc_boolean_t firstarg = ISC_TRUE;
@@ -1699,7 +1700,24 @@ parse_args(isc_boolean_t is_batchfile, isc_boolean_t config_only,
                if (strncmp(rv[0], "%", 1) == 0)
                        break;
                if (rv[0][0] == '@') {
-                       addresscount = getaddresses(lookup, &rv[0][1], NULL);
+                       
+                       if (is_batchfile && !config_only) {
+                               addresscount = getaddresses(lookup, &rv[0][1],
+                                                            &result);
+                               if (result != ISC_R_SUCCESS) {
+                                       fprintf(stderr, "couldn't get address "
+                                               "for '%s': %s: skipping "
+                                               "lookup\n", &rv[0][1],
+                                               isc_result_totext(result));
+                                       if (ISC_LINK_LINKED(lookup, link))
+                                               ISC_LIST_DEQUEUE(lookup_list,
+                                                                lookup, link);
+                                       destroy_lookup(lookup);
+                                       return;
+                               }
+                       } else 
+                               addresscount = getaddresses(lookup, &rv[0][1],
+                                                           NULL);
                } else if (rv[0][0] == '+') {
                        plus_option(&rv[0][1], is_batchfile,
                                    lookup);