From 515ada69db06a727ca1197e2aa1f6a286d278228 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tatuya=20JINMEI=20=E7=A5=9E=E6=98=8E=E9=81=94=E5=93=89?= Date: Wed, 13 Aug 2008 02:20:09 +0000 Subject: [PATCH] 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] --- CHANGES | 4 ++++ lib/dns/masterdump.c | 5 ++--- 2 files changed, 6 insertions(+), 3 deletions(-) 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); }