From: Tatuya JINMEI 神明達哉 Date: Wed, 13 Aug 2008 02:20:09 +0000 (+0000) Subject: 2414. [bug] A masterdump context held the database lock too long, X-Git-Tag: v9.3.6b1~36^2~31 X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=515ada69db06a727ca1197e2aa1f6a286d278228;p=thirdparty%2Fbind9.git 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] --- diff --git a/CHANGES b/CHANGES index e3728c884d5..2d424fb08ed 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 7b9c12c2d50..2a41b883e89 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); }