throw ImmediateServFailException(msg);
}
+ if (newTarget.isPartOf(qname)) {
+ // a.b.c. CNAME x.a.b.c will go to great depths with QM on
+ string msg = "got a CNAME referral (from cache) to child, switching off QM";
+ LOG(prefix<<qname<<": "<<msg<<endl);
+ setQNameMinimization(false);
+ }
+
// Check to see if we already have seen the new target as a previous target
if (scanForCNAMELoop(newTarget, ret)) {
string msg = "got a CNAME referral (from cache) that causes a loop";
rcode = RCode::ServFail;
return;
}
+ if (newtarget.isPartOf(qname)) {
+ // a.b.c. CNAME x.a.b.c will go to great depths with QM on
+ LOG(prefix<<qname<<": status=got a CNAME referral to child, disabling QM"<<endl);
+ setQNameMinimization(false);
+ }
if (depth > 10) {
LOG(prefix<<qname<<": status=got a CNAME referral, but recursing too deep, returning SERVFAIL"<<endl);