]> 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:21:37 +0000 (02:21 +0000)
committerTatuya JINMEI 神明達哉 <jinmei@isc.org>
Wed, 13 Aug 2008 02:21:37 +0000 (02:21 +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 acea1936796ee015d331d123e5ed053d1759c9a8..5366fca8ea6762bb2525b5c00b196d473b8c53cb 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 03716e246c69893638e222d97f690f7a36aea861..d142dfea9fd3b892620fa3b313f70281f937a657 100644 (file)
@@ -15,7 +15,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: masterdump.c,v 1.73.18.14 2006/08/08 06:39:36 marka Exp $ */
+/* $Id: masterdump.c,v 1.73.18.15 2008/08/13 02:21:37 jinmei Exp $ */
 
 /*! \file */
 
@@ -1412,12 +1412,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);
 }