diff --git a/CHANGES b/CHANGES index e3728c884d..2d424fb08e 100644 --- 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] diff --git a/lib/dns/masterdump.c b/lib/dns/masterdump.c index 7b9c12c2d5..2a41b883e8 100644 --- a/lib/dns/masterdump.c +++ b/lib/dns/masterdump.c @@ -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); }