+ 747. [bug] The code to determine whether an IXFR was possible
+ did not properly check for a database that could
+ not have a journal. [RT #908]
+
746. [bug] The sdb didn't clone rdatasets properly, causing
a crash when the server followed delegations. [RT #905]
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: update.c,v 1.79.2.2 2001/02/15 19:39:09 gson Exp $ */
+/* $Id: update.c,v 1.79.2.3 2001/02/22 19:33:12 gson Exp $ */
#include <config.h>
* to the journal.
*/
if (! ISC_LIST_EMPTY(diff.tuples)) {
+ char *journalfile;
dns_journal_t *journal;
/*
}
}
- isc_log_write(UPDATE_DEBUG_LOGARGS, "writing journal %s",
- dns_zone_getjournal(zone));
+ journalfile = dns_zone_getjournal(zone);
+ if (journalfile != NULL) {
+ isc_log_write(UPDATE_DEBUG_LOGARGS,
+ "writing journal %s", journalfile);
- journal = NULL;
- result = dns_journal_open(mctx, dns_zone_getjournal(zone),
- ISC_TRUE, &journal);
- if (result != ISC_R_SUCCESS)
- FAILS(result, "journal open failed");
+ journal = NULL;
+ result = dns_journal_open(mctx, journalfile,
+ ISC_TRUE, &journal);
+ if (result != ISC_R_SUCCESS)
+ FAILS(result, "journal open failed");
+
+ result = dns_journal_write_transaction(journal, &diff);
+ if (result != ISC_R_SUCCESS) {
+ dns_journal_destroy(&journal);
+ FAILS(result, "journal write failed");
+ }
- result = dns_journal_write_transaction(journal, &diff);
- if (result != ISC_R_SUCCESS) {
dns_journal_destroy(&journal);
- FAILS(result, "journal write failed");
}
-
- dns_journal_destroy(&journal);
}
/*
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: xfrout.c,v 1.87.2.5 2001/01/12 20:33:17 bwelling Exp $ */
+/* $Id: xfrout.c,v 1.87.2.6 2001/02/22 19:33:14 gson Exp $ */
#include <config.h>
isc_netaddr_t na;
dns_peer_t *peer = NULL;
isc_buffer_t *tsigbuf = NULL;
+ char *journalfile;
switch (reqtype) {
case dns_rdatatype_axfr:
CHECK(soa_rrstream_create(mctx, db, ver, &stream));
goto have_stream;
}
- result = ixfr_rrstream_create(mctx,
- dns_zone_getjournal(zone),
- begin_serial,
- current_serial,
- &data_stream);
+ journalfile = dns_zone_getjournal(zone);
+ if (journalfile != NULL)
+ result = ixfr_rrstream_create(mctx,
+ journalfile,
+ begin_serial,
+ current_serial,
+ &data_stream);
+ else
+ result = ISC_R_NOTFOUND;
if (result == ISC_R_NOTFOUND ||
result == ISC_R_RANGE) {
xfrout_log1(client, question_name, ISC_LOG_DEBUG(4),