state = vState::BogusSelfSignedDS;
dsFailed = true;
}
- else if (qtype == QType::DS && signer == qname && !signer.isRoot() && (type == QType::SOA || type == QType::NSEC || type == QType::NSEC3)) {
+ else if (qtype == QType::DS && signer == qname && !signer.isRoot()) {
+ if (type == QType::SOA || type == QType::NSEC || type == QType::NSEC3) {
/* if we are trying to validate the DS or more likely NSEC(3)s proving that it does not exist, we have a problem.
In that case let's go Bogus (we will check later if we missed a cut)
*/
- state = vState::BogusSelfSignedDS;
- dsFailed = true;
+ state = vState::BogusSelfSignedDS;
+ dsFailed = true;
+ }
+ else if (type == QType::CNAME) {
+ state = vState::BogusUnableToGetDSs;
+ dsFailed = true;
+ }
}
else if (qtype == QType::DNSKEY && signer == qname) {
/* that actually does happen when a server returns NS records in authority