target, FindDNSSECContext& dnssec_ctx)
{
const bool wild = (wildname != NULL);
- FindResultFlags flags = wild ? RESULT_WILDCARD : RESULT_DEFAULT;
- // If the zone file is signed with NSEC3, need to set RESULT_NSEC3_SIGNED
- // flag in the flags. It is good for upper caller to deal with the query
- // response message.
- if (wild && dnssec_ctx.isNSEC3()) {
- flags = (flags | RESULT_NSEC3_SIGNED);
- }
+ // For wildcard case with DNSSEC required, the caller would need to
+ // know whether it's NSEC or NSEC3 signed. getResultFlags returns
+ // appropriate flag based on the query context and zone status.
+ const FindResultFlags flags =
+ wild ? (RESULT_WILDCARD | dnssec_ctx.getResultFlags()) : RESULT_DEFAULT;
+
// Get iterators for the different types of records we are interested in -
// CNAME, NS and Wanted types.
const FoundIterator nsi(found.second.find(RRType::NS()));
const FoundIterator cni(found.second.find(RRType::CNAME()));
const FoundIterator wti(found.second.find(type));
- // For wildcard case with DNSSEC required, the caller would need to know
- // whether it's NSEC or NSEC3 signed. So we need to do an additional
- // search here, even though the NSEC RR may not be returned.
- if (wild && dnssec_ctx.isNSEC() &&
- found.second.find(RRType::NSEC()) != found.second.end()) {
- flags = (flags | RESULT_NSEC_SIGNED);
- }
if (!is_origin && (options & FIND_GLUE_OK) == 0 &&
nsi != found.second.end()) {