From: Mukund Sivaraman Date: Mon, 20 Aug 2012 20:43:59 +0000 (+0530) Subject: [2165] Strip RRSIGs from addditional records in DB datasource when DNSSEC is not... X-Git-Tag: trac2351_base~110^2~22 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ef85853043e2d5f1fe3c2d494cd4af3b553d88fa;p=thirdparty%2Fkea.git [2165] Strip RRSIGs from addditional records in DB datasource when DNSSEC is not asked --- diff --git a/src/lib/datasrc/zone_finder_context.cc b/src/lib/datasrc/zone_finder_context.cc index 7913d71118..019707bc22 100644 --- a/src/lib/datasrc/zone_finder_context.cc +++ b/src/lib/datasrc/zone_finder_context.cc @@ -47,7 +47,24 @@ getAdditionalAddrs(ZoneFinder& finder, const Name& name, BOOST_FOREACH(RRType rrtype, requested_types) { ConstZoneFinderContextPtr ctx = finder.find(name, rrtype, options); if (ctx->code == ZoneFinder::SUCCESS) { - result_rrsets.push_back(ctx->rrset); + ConstRRsetPtr rr = ctx->rrset; + ConstRRsetPtr sig_rrset = rr->getRRsig(); + if (sig_rrset && + ((options & ZoneFinder::FIND_DNSSEC) == 0)) { + RRsetPtr result_base(new RRset(rr->getName(), + rr->getClass(), + rr->getType(), + rr->getTTL())); + for (RdataIteratorPtr i(rr->getRdataIterator()); + !i->isLast(); + i->next()) { + result_base->addRdata(i->getCurrent()); + } + + result_rrsets.push_back(result_base); + } else { + result_rrsets.push_back(rr); + } } } }