+1118. [bug] On multithreaded servers, a race condition
+ could cause an assertion failure in resolver.c
+ during resolver shutdown. [RT #2029]
+
1114. [port] Ignore more accept() errors. [RT #2021]
1111. [bug] Multithreaded servers could deadlock processing
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: resolver.c,v 1.187.2.11 2001/07/11 01:23:56 gson Exp $ */
+/* $Id: resolver.c,v 1.187.2.12 2001/11/12 22:37:56 marka Exp $ */
#include <config.h>
FCTXTRACE("doshutdown");
- fctx->attributes |= FCTX_ATTR_SHUTTINGDOWN;
-
/*
* An fctx that is shutting down is no longer in ADDRWAIT mode.
*/
LOCK(&res->buckets[bucketnum].lock);
+ fctx->attributes |= FCTX_ATTR_SHUTTINGDOWN;
+
INSIST(fctx->state == fetchstate_active ||
fctx->state == fetchstate_done);
INSIST(fctx->want_shutdown);
type = rdataset->type;
if (type == dns_rdatatype_sig)
type = rdataset->covers;
+ if (((type == dns_rdatatype_ns ||
+ type == dns_rdatatype_soa) &&
+ !dns_name_issubdomain(qname, name)))
+ return (DNS_R_FORMERR);
if (type == dns_rdatatype_ns) {
/*
* NS or SIG NS.
if (ns_name != NULL)
ns_name->attributes &= ~DNS_NAMEATTR_CACHE;
- if (negative_response)
+ if (negative_response && oqname == NULL)
fctx->attributes |= FCTX_ATTR_WANTNCACHE;
return (ISC_R_SUCCESS);