mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-31 06:25:31 +00:00
RT #927 fix from Bob:
759. [bug] The resolver didn't turn off "avoid fetches" mode when restarting, possibly causing resolution to fail when it should not. This bug only affected platforms which support both IPv4 and IPv6. [RT #927] 758. [bug] The "avoid fetches" code did not treat negative cache entries correctly, causing fetches that would be useful to be avoided. This bug only affected platforms which support both IPv4 and IPv6. [RT #927]
This commit is contained in:
@@ -15,7 +15,7 @@
|
||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: adb.c,v 1.170 2001/02/09 00:13:52 gson Exp $ */
|
||||
/* $Id: adb.c,v 1.171 2001/02/28 20:51:22 gson Exp $ */
|
||||
|
||||
/*
|
||||
* Implementation notes
|
||||
@@ -2396,7 +2396,7 @@ dns_adb_createfind(dns_adb_t *adb, isc_task_t *task, isc_taskaction_t action,
|
||||
dns_adbfind_t *find;
|
||||
dns_adbname_t *adbname;
|
||||
int bucket;
|
||||
isc_boolean_t want_event, start_at_root, alias;
|
||||
isc_boolean_t want_event, start_at_root, alias, have_address;
|
||||
isc_result_t result;
|
||||
unsigned int wanted_addresses;
|
||||
unsigned int wanted_fetches;
|
||||
@@ -2628,8 +2628,13 @@ dns_adb_createfind(dns_adb_t *adb, isc_task_t *task, isc_taskaction_t action,
|
||||
}
|
||||
|
||||
fetch:
|
||||
if ((WANT_INET(wanted_addresses) && NAME_HAS_V4(adbname)) ||
|
||||
(WANT_INET6(wanted_addresses) && NAME_HAS_V6(adbname)))
|
||||
have_address = ISC_TRUE;
|
||||
else
|
||||
have_address = ISC_FALSE;
|
||||
if (wanted_fetches != 0 &&
|
||||
(!FIND_AVOIDFETCHES(find) || wanted_addresses == wanted_fetches)) {
|
||||
! (FIND_AVOIDFETCHES(find) && have_address)) {
|
||||
/*
|
||||
* We're missing at least one address family. Either the
|
||||
* caller hasn't instructed us to avoid fetches, or we don't
|
||||
|
Reference in New Issue
Block a user