diff --git a/dns64/dns64.c b/dns64/dns64.c index 51e7437e6..7db8f4cef 100644 --- a/dns64/dns64.c +++ b/dns64/dns64.c @@ -896,10 +896,6 @@ dns64_inform_super(struct module_qstate* qstate, int id, */ super->minfo[id] = (void*)DNS64_SUBQUERY_FINISHED; - /* Use return code from A query in response to client. */ - if (super->return_rcode != LDNS_RCODE_NOERROR) - super->return_rcode = qstate->return_rcode; - /* If there is no successful answer, we're done. */ if (qstate->return_rcode != LDNS_RCODE_NOERROR || !qstate->return_msg @@ -907,6 +903,10 @@ dns64_inform_super(struct module_qstate* qstate, int id, return; } + /* Use return code from A query in response to client. */ + if (super->return_rcode != LDNS_RCODE_NOERROR) + super->return_rcode = qstate->return_rcode; + /* Generate a response suitable for the original query. */ if (qstate->qinfo.qtype == LDNS_RR_TYPE_A) { dns64_adjust_a(id, super, qstate);