]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[2165] Strip RRSIGs from addditional records in DB datasource when DNSSEC is not...
authorMukund Sivaraman <muks@isc.org>
Mon, 20 Aug 2012 20:43:59 +0000 (02:13 +0530)
committerMukund Sivaraman <muks@isc.org>
Mon, 20 Aug 2012 20:43:59 +0000 (02:13 +0530)
src/lib/datasrc/zone_finder_context.cc

index 7913d711184e1f7fc4da125dd112e990c72c3ba6..019707bc2217ac55ec1340dc2dc5ce9b4b56f610 100644 (file)
@@ -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);
+            }
         }
     }
 }