LDNS_RCODE_FORMERR);
return 1;
}
+ if(qinfo.qtype == LDNS_RR_TYPE_AXFR ||
+ qinfo.qtype == LDNS_RR_TYPE_IXFR) {
+ verbose(VERB_ALGO, "worker request: refused zone transfer.");
+ LDNS_QR_SET(ldns_buffer_begin(c->buffer));
+ LDNS_RCODE_SET(ldns_buffer_begin(c->buffer),
+ LDNS_RCODE_REFUSED);
+ return 1;
+ }
h = query_info_hash(&qinfo);
if((ret=parse_edns_from_pkt(c->buffer, &edns)) != 0) {
verbose(VERB_ALGO, "worker parse edns: formerror.");
- uncapped timeout for server selection, so that very fast or slow
servers will stand out from the rest.
- target-fetch-policy: "3 2 1 0 0" config setting.
+ - fixup queries answered without RD bit (for root prime results).
+ - refuse AXFR and IXFR requests.
18 June 2007: Wouter
- same, move subqueries to slumber list when first has resolved.
* cached referral as the response. */
if(!(qstate->query_flags & BIT_RD)) {
iq->response = iq->deleg_msg;
+ if(verbosity >= VERB_ALGO)
+ log_dns_msg("no RD requested, using delegation msg",
+ &iq->response->qinfo, iq->response->rep);
return final_state(iq);
}
delegpt_log(dp);
foriq = (struct iter_qstate*)forq->minfo[id];
foriq->dp = dp;
- foriq->response = dns_copy_msg(iq->response, forq->region);
- if(!foriq->response) {
+ foriq->deleg_msg = dns_copy_msg(iq->response, forq->region);
+ if(!foriq->deleg_msg) {
log_err("copy prime response: out of memory");
return error_response(qstate, id, LDNS_RCODE_SERVFAIL);
}