]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
2797. [bug] Don't decrement the dispatch manager's maxbuffers.
authorMark Andrews <marka@isc.org>
Wed, 2 Dec 2009 23:32:38 +0000 (23:32 +0000)
committerMark Andrews <marka@isc.org>
Wed, 2 Dec 2009 23:32:38 +0000 (23:32 +0000)
                        [RT #20613]

CHANGES
lib/dns/dispatch.c

diff --git a/CHANGES b/CHANGES
index 06bae232f2719e7abfb3c5b5ba2959736b13d46a..bb0f284409d6a83ee81ae61c61b2d4abd87ec3e7 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,6 @@
+2797.  [bug]           Don't decrement the dispatch manager's maxbuffers.
+                       [RT #20613]
+
 2790.  [bug]           Handle DS queries to stub zones. [RT #20440]
 
 2786.  [bug]           Additional could be promoted to answer. [RT #20663]
index f1557ec2cbb471bfaedfbbfd629f8a7790506c2a..144f95a32a846e67ca3cb7100ac021f942e6d338 100644 (file)
@@ -15,7 +15,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: dispatch.c,v 1.137.128.24 2009/01/31 00:44:43 marka Exp $ */
+/* $Id: dispatch.c,v 1.137.128.25 2009/12/02 23:32:38 marka Exp $ */
 
 /*! \file */
 
@@ -1948,8 +1948,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) {