diff --git a/src/knot/nameserver/ixfr.c b/src/knot/nameserver/ixfr.c index 28b293295d72f2b372507640f21d72deb3927ad7..247c95f7add1f041464e27cc40da9ec69a08cd3e 100644 --- a/src/knot/nameserver/ixfr.c +++ b/src/knot/nameserver/ixfr.c @@ -567,6 +567,7 @@ int ixfr_query(knot_pkt_t *pkt, struct query_data *qdata) int ret = KNOT_EOK; struct timeval now = {0}; struct ixfr_proc *ixfr = (struct ixfr_proc*)qdata->ext; + knot_pkt_t *query = qdata->query; /* If IXFR is disabled, respond with SOA. */ if (qdata->param->proc_flags & NS_QUERY_NO_IXFR) { @@ -589,6 +590,10 @@ int ixfr_query(knot_pkt_t *pkt, struct query_data *qdata) case KNOT_ERANGE: /* No history -> AXFR. */ case KNOT_ENOENT: IXFROUT_LOG(LOG_INFO, "Incomplete history, fallback to AXFR."); + knot_pkt_clear(pkt); + knot_pkt_put_question(pkt, knot_pkt_qname(query), + knot_pkt_qclass(query), + KNOT_RRTYPE_AXFR); qdata->packet_type = KNOT_QUERY_AXFR; /* Solve as AXFR. */ return axfr_query_process(pkt, qdata); default: /* Server errors. */