From: JINMEI Tatuya Date: Wed, 1 Feb 2012 17:37:50 +0000 (-0800) Subject: [1551] used find_if instead of hardcoded conditions to check whether X-Git-Tag: trac2351_base~268^2~1^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ae0979752fd9062a5b184ec855c2f9eab1363aba;p=thirdparty%2Fkea.git [1551] used find_if instead of hardcoded conditions to check whether CNAME + non-NSEC is about to coexist. --- diff --git a/src/lib/datasrc/memory_datasrc.cc b/src/lib/datasrc/memory_datasrc.cc index ba486c89dd..ddce599a9a 100644 --- a/src/lib/datasrc/memory_datasrc.cc +++ b/src/lib/datasrc/memory_datasrc.cc @@ -17,6 +17,7 @@ #include #include #include + #include #include #include @@ -169,6 +170,14 @@ struct InMemoryZoneFinder::InMemoryZoneFinderImpl { } } + // A helper predicate used in contextCheck() to check if a given domain + // name has a RRset of type different than NSEC. + struct IsNotNSEC { + bool operator()(const DomainPair& element) const { + return (element.second->getType() != RRType::NSEC()); + } + }; + /* * Does some checks in context of the data that are already in the zone. * Currently checks for forbidden combinations of RRsets in the same @@ -181,9 +190,8 @@ struct InMemoryZoneFinder::InMemoryZoneFinderImpl { // owner name except with NSEC, which is the only RR that can coexist // with CNAME (and also RRSIG, which is handled separately) if (rrset.getType() == RRType::CNAME()) { - if (!domain.empty() && - (domain.size() > 1 || - (domain.begin()->second->getType() != RRType::NSEC()))) { + if (find_if(domain.begin(), domain.end(), IsNotNSEC()) + != domain.end()) { LOG_ERROR(logger, DATASRC_MEM_CNAME_TO_NONEMPTY). arg(rrset.getName()); isc_throw(AddError, "CNAME can't be added with other data for "