* Negative results must be indicated in event->result.
*/
INSIST(hevent->rdataset != NULL);
- if (dns_rdataset_isassociated(hevent->rdataset) &&
- NEGATIVE(hevent->rdataset))
- {
- INSIST(eresult == DNS_R_NCACHENXDOMAIN ||
- eresult == DNS_R_NCACHENXRRSET);
+ if (dns_rdataset_isassociated(hevent->rdataset)) {
+ if (NEGATIVE(hevent->rdataset)) {
+ INSIST(eresult == DNS_R_NCACHENXDOMAIN ||
+ eresult == DNS_R_NCACHENXRRSET);
+ } else if (eresult == ISC_R_SUCCESS &&
+ hevent->rdataset->type != fctx->type)
+ {
+ switch (hevent->rdataset->type) {
+ case dns_rdatatype_cname:
+ eresult = DNS_R_CNAME;
+ break;
+ case dns_rdatatype_dname:
+ eresult = DNS_R_DNAME;
+ break;
+ default:
+ break;
+ }
+ }
}
hevent->result = eresult;
* Negative results must be indicated in
* event->result.
*/
- if (dns_rdataset_isassociated(event->rdataset) &&
- NEGATIVE(event->rdataset))
- {
- INSIST(eresult == DNS_R_NCACHENXDOMAIN ||
- eresult == DNS_R_NCACHENXRRSET);
+ if (dns_rdataset_isassociated(event->rdataset)) {
+ if (NEGATIVE(event->rdataset)) {
+ INSIST(eresult ==
+ DNS_R_NCACHENXDOMAIN ||
+ eresult == DNS_R_NCACHENXRRSET);
+ } else if (eresult == ISC_R_SUCCESS &&
+ event->rdataset->type != fctx->type)
+ {
+ switch (event->rdataset->type) {
+ case dns_rdatatype_cname:
+ eresult = DNS_R_CNAME;
+ break;
+ case dns_rdatatype_dname:
+ eresult = DNS_R_DNAME;
+ break;
+ default:
+ break;
+ }
+ }
}
event->result = eresult;
if (adbp != NULL && *adbp != NULL) {