mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-31 06:25:31 +00:00
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.
This commit is contained in:
@@ -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 <config.h>
|
||||
|
||||
@@ -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);
|
||||
|
Reference in New Issue
Block a user