]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
2414. [bug] A masterdump context held the database lock too long,
authorTatuya JINMEI 神明達哉 <jinmei@isc.org>
Wed, 13 Aug 2008 02:20:09 +0000 (02:20 +0000)
committerTatuya JINMEI 神明達哉 <jinmei@isc.org>
Wed, 13 Aug 2008 02:20:09 +0000 (02:20 +0000)
causing various troubles such as dead lock and
recursive lock acquisition. [RT #18311, #18456]

CHANGES
lib/dns/masterdump.c

diff --git a/CHANGES b/CHANGES
index e3728c884d5eeed056e24578b7c1fe50cb30a467..2d424fb08ed2965be6060e2a3ba79aa1b064ec5a 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,7 @@
+2414.  [bug]           A masterdump context held the database lock too long,
+                       causing various troubles such as dead lock and
+                       recursive lock acquisition. [RT #18311, #18456]
+
 2413.  [bug]           Fixed an unreachable code path in socket.c. [RT #18442]
 
 2412.  [bug]           win32: address a resourse leak. [RT #18374]
index 7b9c12c2d507d7696817ac59c44aefb52eebd2ce..2a41b883e8944a8ca33952cbef981b3a8d3b2a20 100644 (file)
@@ -15,7 +15,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: masterdump.c,v 1.92 2008/04/09 21:39:46 explorer Exp $ */
+/* $Id: masterdump.c,v 1.93 2008/08/13 02:20:09 jinmei Exp $ */
 
 /*! \file */
 
@@ -1422,12 +1422,11 @@ dumptostreaminc(dns_dumpctx_t *dctx) {
                                      "dumptostreaminc(%p) new nodes -> %d\n",
                                      dctx, dctx->nodes);
                }
-               result = dns_dbiterator_pause(dctx->dbiter);
-               RUNTIME_CHECK(result == ISC_R_SUCCESS);
                result = DNS_R_CONTINUE;
        } else if (result == ISC_R_NOMORE)
                result = ISC_R_SUCCESS;
  fail:
+       RUNTIME_CHECK(dns_dbiterator_pause(dctx->dbiter) == ISC_R_SUCCESS);
        isc_mem_put(dctx->mctx, buffer.base, buffer.length);
        return (result);
 }