From: Mark Andrews Date: Fri, 17 Oct 2008 03:34:53 +0000 (+0000) Subject: 2465. [bug] Adb's handling of lame addresses was different X-Git-Tag: v9.3.6rc1~11 X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=a8af343cf0f3b41016a633720c99af38bae141c3;p=thirdparty%2Fbind9.git 2465. [bug] Adb's handling of lame addresses was different for IPv4 and IPv6. [RT #18738] --- diff --git a/CHANGES b/CHANGES index 14f56f3e9c6..1aca38dd800 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,6 @@ +2465. [bug] Adb's handling of lame addresses was different + for IPv4 and IPv6. [RT #18738] + 2463. [port] linux: POSIX doesn't include the IPv6 Advanced Socket API and glibc hides parts of the IPv6 Advanced Socket API as a result. This is stupid as it breaks how the diff --git a/lib/dns/adb.c b/lib/dns/adb.c index 28b8dfd7d58..49f60ecbf88 100644 --- a/lib/dns/adb.c +++ b/lib/dns/adb.c @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: adb.c,v 1.181.2.11.2.40 2008/10/15 04:26:35 marka Exp $ */ +/* $Id: adb.c,v 1.181.2.11.2.41 2008/10/17 03:34:53 marka Exp $ */ /* * Implementation notes @@ -1731,8 +1731,11 @@ copy_namehook_lists(dns_adb_t *adb, dns_adbfind_t *find, dns_name_t *zone, bucket = entry->lock_bucket; LOCK(&adb->entrylocks[bucket]); - if (entry_is_bad_for_zone(adb, entry, zone, now)) + if (!FIND_RETURNLAME(find) + && entry_is_bad_for_zone(adb, entry, zone, now)) { + find->options |= DNS_ADBFIND_LAMEPRUNED; goto nextv6; + } addrinfo = new_adbaddrinfo(adb, entry, find->port); if (addrinfo == NULL) { find->partial_result |= DNS_ADBFIND_INET6;