{ /* apply rpz triggers at query time */
struct dns_msg* forged_response = rpz_iterator_module_callback(qstate, iq);
if(forged_response != NULL) {
- iq->response = forged_response;
- next_state(iq, FINISHED_STATE);
qstate->ext_state[id] = module_finished;
+ qstate->return_rcode = forged_response->rep->flags;
+ qstate->return_msg = forged_response;
+ next_state(iq, FINISHED_STATE);
return 0;
}
}
if(msg == NULL) { return msg; }
msg->qinfo = ms->qinfo;
msg->rep = construct_reply_info_base(ms->region,
- LDNS_RCODE_NOERROR|BIT_QR|BIT_AA|BIT_RA,
+ BIT_RD|BIT_QR|BIT_AA|BIT_RA,
1, //qd
0, //ttl
0, //prettl
0, //ar
0, //total
sec_status_secure);
+ FLAGS_SET_RCODE(msg->rep->flags, LDNS_RCODE_NOERROR);
return msg;
}
if(msg == NULL) { return msg; }
msg->qinfo = ms->qinfo;
msg->rep = construct_reply_info_base(ms->region,
- LDNS_RCODE_NXDOMAIN|BIT_QR|BIT_AA|BIT_RA,
+ BIT_RD|BIT_QR|BIT_AA|BIT_RA,
1, //qd
0, //ttl
0, //prettl
0, //ar
0, //total
sec_status_secure);
+ FLAGS_SET_RCODE(msg->rep->flags, LDNS_RCODE_NXDOMAIN);
return msg;
}