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 228802)
|
|
+++ contrib/bind9/lib/dns/rbtdb.c (working copy)
|
|
@@ -278,6 +278,7 @@
|
|
#define RDATASET_ATTR_RESIGN 0x0020
|
|
#define RDATASET_ATTR_STATCOUNT 0x0040
|
|
#define RDATASET_ATTR_OPTOUT 0x0080
|
|
+#define RDATASET_ATTR_NEGATIVE 0x0100
|
|
|
|
typedef struct acache_cbarg {
|
|
dns_rdatasetadditional_t type;
|
|
@@ -316,6 +317,8 @@
|
|
(((header)->attributes & RDATASET_ATTR_RESIGN) != 0)
|
|
#define OPTOUT(header) \
|
|
(((header)->attributes & RDATASET_ATTR_OPTOUT) != 0)
|
|
+#define NEGATIVE(header) \
|
|
+ (((header)->attributes & RDATASET_ATTR_NEGATIVE) != 0)
|
|
|
|
#define DEFAULT_NODE_LOCK_COUNT 7 /*%< Should be prime. */
|
|
|
|
@@ -4620,7 +4623,7 @@
|
|
rdataset);
|
|
if (need_headerupdate(found, search.now))
|
|
update = found;
|
|
- if (foundsig != NULL) {
|
|
+ if (!NEGATIVE(found) && foundsig != NULL) {
|
|
bind_rdataset(search.rbtdb, node, foundsig, search.now,
|
|
sigrdataset);
|
|
if (need_headerupdate(foundsig, search.now))
|
|
@@ -5249,7 +5252,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 228802)
|
|
+++ contrib/bind9/bin/named/query.c (working copy)
|
|
@@ -1280,11 +1280,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;
|
|
@@ -1325,8 +1323,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;
|
|
@@ -1775,10 +1774,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 */
|