* Incoming zone transfer context.
*/
+typedef struct dns_ixfr dns_ixfr_t;
+
struct dns_xfrin {
unsigned int magic;
isc_mem_t *mctx;
*/
dns_rdatacallbacks_t axfr;
- struct {
+ struct dns_ixfr {
uint32_t diffs;
uint32_t maxdiffs;
uint32_t request_serial;
}
static isc_result_t
-ixfr_begin_transaction(dns_xfrin_t *xfr) {
+ixfr_begin_transaction(dns_ixfr_t *ixfr) {
isc_result_t result = ISC_R_SUCCESS;
- if (xfr->ixfr.journal != NULL) {
- CHECK(dns_journal_begin_transaction(xfr->ixfr.journal));
+ if (ixfr->journal != NULL) {
+ CHECK(dns_journal_begin_transaction(ixfr->journal));
}
cleanup:
return result;
}
static isc_result_t
-ixfr_end_transaction(dns_xfrin_t *xfr) {
+ixfr_end_transaction(dns_ixfr_t *ixfr) {
isc_result_t result = ISC_R_SUCCESS;
-
- CHECK(dns_zone_verifydb(xfr->zone, xfr->db, xfr->ver));
/* XXX enter ready-to-commit state here */
- if (xfr->ixfr.journal != NULL) {
- CHECK(dns_journal_commit(xfr->ixfr.journal));
+ if (ixfr->journal != NULL) {
+ CHECK(dns_journal_commit(ixfr->journal));
}
cleanup:
return result;
isc_result_t result = ISC_R_SUCCESS;
uint64_t records;
- CHECK(ixfr_begin_transaction(xfr));
+ CHECK(ixfr_begin_transaction(&xfr->ixfr));
CHECK(dns_diff_apply(&data->diff, xfr->db, xfr->ver));
if (xfr->maxrecords != 0U) {
CHECK(dns_journal_writediff(xfr->ixfr.journal, &data->diff));
}
- result = ixfr_end_transaction(xfr);
+ CHECK(dns_zone_verifydb(xfr->zone, xfr->db, xfr->ver));
+
+ result = ixfr_end_transaction(&xfr->ixfr);
return result;
cleanup:
/* We need to end the transaction, but keep the previous error */
- (void)ixfr_end_transaction(xfr);
+ (void)ixfr_end_transaction(&xfr->ixfr);
return result;
}