From: Mark Andrews Date: Wed, 2 Dec 2009 23:15:14 +0000 (+0000) Subject: 2797. [bug] Don't decrement the dispatch manager's maxbuffers. X-Git-Tag: v9.7.0rc1~1^3~10 X-Git-Url: http://git.ipfire.org/gitweb/index.cgi?a=commitdiff_plain;h=2a0d4c4d6ba5addb33cd1bccecc55ca4a095f191;p=thirdparty%2Fbind9.git 2797. [bug] Don't decrement the dispatch manager's maxbuffers. [RT #20613] --- diff --git a/CHANGES b/CHANGES index 356ced04c1f..2469aef5de2 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,6 @@ +2797. [bug] Don't decrement the dispatch manager's maxbuffers. + [RT #20613] + 2796. [bug] Missing dns_rdataset_disassociate() call in dns_nsec3_delnsec3sx(). [RT #20681] diff --git a/lib/dns/dispatch.c b/lib/dns/dispatch.c index 9fa35008826..1d65ce43f4c 100644 --- a/lib/dns/dispatch.c +++ b/lib/dns/dispatch.c @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: dispatch.c,v 1.167 2009/11/25 23:49:21 tbox Exp $ */ +/* $Id: dispatch.c,v 1.168 2009/12/02 23:15:14 marka Exp $ */ /*! \file */ @@ -2111,8 +2111,18 @@ dns_dispatchmgr_setudp(dns_dispatchmgr_t *mgr, /* Create or adjust buffer pool */ if (mgr->bpool != NULL) { - isc_mempool_setmaxalloc(mgr->bpool, maxbuffers); - mgr->maxbuffers = maxbuffers; + /* + * We only increase the maxbuffers to avoid accidental buffer + * shortage. Ideally we'd separate the manager-wide maximum + * from per-dispatch limits and respect the latter within the + * global limit. But at this moment that's deemed to be + * overkilling and isn't worth additional implementation + * complexity. + */ + if (maxbuffers > mgr->maxbuffers) { + isc_mempool_setmaxalloc(mgr->bpool, maxbuffers); + mgr->maxbuffers = maxbuffers; + } } else { result = isc_mempool_create(mgr->mctx, buffersize, &mgr->bpool); if (result != ISC_R_SUCCESS) {