patches for easier mirroring, to eliminate a special copy, to make www.freebsd.org/security a full copy of security.freebsd.org and be eventually be the same. For now files are just sitting there. The symlinks are missing. Discussed on: www (repository location) Discussed with: simon (so)
83 lines
2.8 KiB
Diff
83 lines
2.8 KiB
Diff
Index: contrib/bind9/lib/dns/rbtdb.c
|
|
===================================================================
|
|
--- contrib/bind9/lib/dns/rbtdb.c (revision 228801)
|
|
+++ contrib/bind9/lib/dns/rbtdb.c (working copy)
|
|
@@ -244,6 +244,7 @@
|
|
#define RDATASET_ATTR_IGNORE 0x0004
|
|
#define RDATASET_ATTR_RETAIN 0x0008
|
|
#define RDATASET_ATTR_NXDOMAIN 0x0010
|
|
+#define RDATASET_ATTR_NEGATIVE 0x0100
|
|
|
|
typedef struct acache_cbarg {
|
|
dns_rdatasetadditional_t type;
|
|
@@ -278,6 +279,8 @@
|
|
(((header)->attributes & RDATASET_ATTR_RETAIN) != 0)
|
|
#define NXDOMAIN(header) \
|
|
(((header)->attributes & RDATASET_ATTR_NXDOMAIN) != 0)
|
|
+#define NEGATIVE(header) \
|
|
+ (((header)->attributes & RDATASET_ATTR_NEGATIVE) != 0)
|
|
|
|
#define DEFAULT_NODE_LOCK_COUNT 7 /*%< Should be prime. */
|
|
#define DEFAULT_CACHE_NODE_LOCK_COUNT 1009 /*%< Should be prime. */
|
|
@@ -3662,7 +3665,7 @@
|
|
result == DNS_R_NCACHENXRRSET) {
|
|
bind_rdataset(search.rbtdb, node, found, search.now,
|
|
rdataset);
|
|
- if (foundsig != NULL)
|
|
+ if (!NEGATIVE(found) && foundsig != NULL)
|
|
bind_rdataset(search.rbtdb, node, foundsig, search.now,
|
|
sigrdataset);
|
|
}
|
|
@@ -4248,7 +4251,7 @@
|
|
}
|
|
if (found != NULL) {
|
|
bind_rdataset(rbtdb, rbtnode, found, now, rdataset);
|
|
- if (foundsig != NULL)
|
|
+ if (!NEGATIVE(found) && foundsig != NULL)
|
|
bind_rdataset(rbtdb, rbtnode, foundsig, now,
|
|
sigrdataset);
|
|
}
|
|
Index: contrib/bind9/bin/named/query.c
|
|
===================================================================
|
|
--- contrib/bind9/bin/named/query.c (revision 228801)
|
|
+++ contrib/bind9/bin/named/query.c (working copy)
|
|
@@ -1251,11 +1251,9 @@
|
|
goto addname;
|
|
if (result == DNS_R_NCACHENXRRSET) {
|
|
dns_rdataset_disassociate(rdataset);
|
|
- /*
|
|
- * Negative cache entries don't have sigrdatasets.
|
|
- */
|
|
- INSIST(sigrdataset == NULL ||
|
|
- ! dns_rdataset_isassociated(sigrdataset));
|
|
+ if (sigrdataset != NULL &&
|
|
+ dns_rdataset_isassociated(sigrdataset))
|
|
+ dns_rdataset_disassociate(sigrdataset);
|
|
}
|
|
if (result == ISC_R_SUCCESS) {
|
|
mname = NULL;
|
|
@@ -1296,8 +1294,9 @@
|
|
goto addname;
|
|
if (result == DNS_R_NCACHENXRRSET) {
|
|
dns_rdataset_disassociate(rdataset);
|
|
- INSIST(sigrdataset == NULL ||
|
|
- ! dns_rdataset_isassociated(sigrdataset));
|
|
+ if (sigrdataset != NULL &&
|
|
+ dns_rdataset_isassociated(sigrdataset))
|
|
+ dns_rdataset_disassociate(sigrdataset);
|
|
}
|
|
if (result == ISC_R_SUCCESS) {
|
|
mname = NULL;
|
|
@@ -1746,10 +1745,8 @@
|
|
goto setcache;
|
|
if (result == DNS_R_NCACHENXRRSET) {
|
|
dns_rdataset_disassociate(rdataset);
|
|
- /*
|
|
- * Negative cache entries don't have sigrdatasets.
|
|
- */
|
|
- INSIST(! dns_rdataset_isassociated(sigrdataset));
|
|
+ if (dns_rdataset_isassociated(sigrdataset))
|
|
+ dns_rdataset_disassociate(sigrdataset);
|
|
}
|
|
if (result == ISC_R_SUCCESS) {
|
|
/* Remember the result as a cache */
|