diff --git a/CHANGES b/CHANGES index b7f25d792e..17c7ceb42a 100644 --- 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 diff --git a/bin/dig/dig.c b/bin/dig/dig.c index c240c412ef..9a6f0f9594 100644 --- a/bin/dig/dig.c +++ b/bin/dig/dig.c @@ -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);