|
@@ -189,6 +189,19 @@ checkCache(QueryTask& task, RRsetList& target) {
|
|
rrsets.addRRset(rrset);
|
|
rrsets.addRRset(rrset);
|
|
target.append(rrsets);
|
|
target.append(rrsets);
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ // Reset the referral flag and treat CNAME as "not found".
|
|
|
|
+ // This emulates the behavior of the sqlite3 data source.
|
|
|
|
+ // XXX: this is not ideal in that the responsibility for handling
|
|
|
|
+ // operation specific cases is spread over various classes at
|
|
|
|
+ // different abstraction levels. For longer terms we should
|
|
|
|
+ // revisit the whole datasource/query design, and clarify this
|
|
|
|
+ // point better.
|
|
|
|
+ flags &= ~DataSrc::REFERRAL;
|
|
|
|
+ if ((flags & DataSrc::CNAME_FOUND) != 0) {
|
|
|
|
+ flags &= ~DataSrc::CNAME_FOUND;
|
|
|
|
+ flags |= DataSrc::TYPE_NOT_FOUND;
|
|
|
|
+ }
|
|
task.flags = flags;
|
|
task.flags = flags;
|
|
return (true);
|
|
return (true);
|
|
}
|
|
}
|