From 4e681da26da4fff442b3ae24b0da2de1f240c43c Mon Sep 17 00:00:00 2001 From: Mark Andrews Date: Fri, 14 May 2004 00:55:57 +0000 Subject: [PATCH] 1636. [bug] The dump done callback could get ISC_R_SUCCESS even if a error had occured. The database version no longer matched the version of the database that was dumped. --- CHANGES | 4 ++++ lib/dns/masterdump.c | 14 ++++++++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/CHANGES b/CHANGES index 4a3ff5fde5..0cf4d7baad 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,7 @@ +1636. [bug] The dump done callback could get ISC_R_SUCCESS even if + a error had occured. The database version no longer + matched the version of the database that was dumped. + 1635. [bug] Memory leak on error in query_addds(). 1634. [placeholder] rt11208 diff --git a/lib/dns/masterdump.c b/lib/dns/masterdump.c index 532d4e810d..3b2ce7ec6e 100644 --- a/lib/dns/masterdump.c +++ b/lib/dns/masterdump.c @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: masterdump.c,v 1.73 2004/03/05 05:09:21 marka Exp $ */ +/* $Id: masterdump.c,v 1.74 2004/05/14 00:55:57 marka Exp $ */ #include @@ -979,6 +979,7 @@ closeandrename(FILE *f, isc_result_t result, const char *temp, const char *file) static void dump_quantum(isc_task_t *task, isc_event_t *event) { isc_result_t result; + isc_result_t tresult; dns_dumpctx_t *dctx; REQUIRE(event != NULL); @@ -994,11 +995,12 @@ dump_quantum(isc_task_t *task, isc_event_t *event) { return; } - if (dctx->file != NULL) - result = closeandrename(dctx->f, result, - dctx->tmpfile, dctx->file); - if (dctx->version != NULL) - dns_db_closeversion(dctx->db, &dctx->version, ISC_FALSE); + if (dctx->file != NULL) { + tresult = closeandrename(dctx->f, result, + dctx->tmpfile, dctx->file); + if (tresult != ISC_R_SUCCESS && result == ISC_R_SUCCESS) + result = tresult; + } (dctx->done)(dctx->done_arg, result); isc_event_free(&event); dns_dumpctx_detach(&dctx);