summaryrefslogtreecommitdiffstats
path: root/contrib/bind9/lib
diff options
context:
space:
mode:
authordougb <dougb@FreeBSD.org>2005-08-18 18:39:31 +0000
committerdougb <dougb@FreeBSD.org>2005-08-18 18:39:31 +0000
commit9123af99f7956e2383e5b9c4d39e84bea89915fe (patch)
tree94f0a1268badff1391a4542e5c6e8055f4f2bdd5 /contrib/bind9/lib
parent12fce141a0287dc8e40a37fb655a8e4ea066cc16 (diff)
downloadFreeBSD-src-9123af99f7956e2383e5b9c4d39e84bea89915fe.zip
FreeBSD-src-9123af99f7956e2383e5b9c4d39e84bea89915fe.tar.gz
Update the vendor branch with a patch to this file that was
researched by glebius, and incorporated by ISC into the next version of BIND. Unfortunately, it looks like their release will come after the release of FreeBSD 6, so we will bring this in now. The patch addresses a problem with high-load resolvers which hit memory barriers. Without this patch, running the resolving name server out of memory would lead to "unpredictable results." Of course, the canonical answer to this problem is to put more memory into the system, however that is not always possible, and the code should be able to handle this situation gracefully in any case.
Diffstat (limited to 'contrib/bind9/lib')
-rw-r--r--contrib/bind9/lib/dns/resolver.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/contrib/bind9/lib/dns/resolver.c b/contrib/bind9/lib/dns/resolver.c
index 90af5b0..790a2f4 100644
--- a/contrib/bind9/lib/dns/resolver.c
+++ b/contrib/bind9/lib/dns/resolver.c
@@ -2665,7 +2665,7 @@ fctx_create(dns_resolver_t *res, dns_name_t *name, dns_rdatatype_t type,
unsigned int options, unsigned int bucketnum, fetchctx_t **fctxp)
{
fetchctx_t *fctx;
- isc_result_t result = ISC_R_SUCCESS;
+ isc_result_t result;
isc_result_t iresult;
isc_interval_t interval;
dns_fixedname_t qdomain;
@@ -2687,8 +2687,10 @@ fctx_create(dns_resolver_t *res, dns_name_t *name, dns_rdatatype_t type,
strcat(buf, "/"); /* checked */
strcat(buf, typebuf); /* checked */
fctx->info = isc_mem_strdup(res->mctx, buf);
- if (fctx->info == NULL)
+ if (fctx->info == NULL) {
+ result = ISC_R_NOMEMORY;
goto cleanup_fetch;
+ }
FCTXTRACE("create");
dns_name_init(&fctx->name, NULL);
result = dns_name_dup(name, res->mctx, &fctx->name);
OpenPOWER on IntegriCloud