conn._request_serial == get_soa_serial(rr.get_rdata()[0]):
logger.debug(DBG_XFRIN_TRACE, XFRIN_GOT_INCREMENTAL_RESP,
conn.zone_str())
+ conn._diff = None # Will be created on-demand
self.set_xfrstate(conn, XfrinIXFRDeleteSOA())
else:
logger.debug(DBG_XFRIN_TRACE, XFRIN_GOT_NONINCREMENTAL_RESP,
raise XfrinException(rr.get_type().to_text() +
' RR is given in IXFRDeleteSOA state')
# This is the beginning state of one difference sequence (changes
- # for one SOA update). We need to create a new Diff object now.
+ # for one SOA update). We may need to create a new Diff object now.
# Note also that we (unconditionally) enable journaling here. The
# Diff constructor may internally disable it, however, if the
# underlying data source doesn't support journaling.
- conn._diff = Diff(conn._datasrc_client, conn._zone_name, False, True)
+ if conn._diff is None:
+ conn._diff = Diff(conn._datasrc_client, conn._zone_name, False,
+ True)
conn._diff.delete_data(rr)
self.set_xfrstate(conn, XfrinIXFRDelete())
conn.get_transfer_stats().ixfr_deletion_count += 1