From: JINMEI Tatuya Date: Tue, 31 Jan 2012 18:39:17 +0000 (-0800) Subject: [1551] allow adding NSEC after CNAME for the same name. X-Git-Tag: trac2351_base~268^2~1^2~5 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d5a8a75cf9e5cd88b5e7471eb7be8255cd2da28d;p=thirdparty%2Fkea.git [1551] allow adding NSEC after CNAME for the same name. --- diff --git a/src/lib/datasrc/memory_datasrc.cc b/src/lib/datasrc/memory_datasrc.cc index 0a3280be4a..90142bb205 100644 --- a/src/lib/datasrc/memory_datasrc.cc +++ b/src/lib/datasrc/memory_datasrc.cc @@ -190,7 +190,8 @@ struct InMemoryZoneFinder::InMemoryZoneFinderImpl { isc_throw(AddError, "CNAME can't be added with other data for " << rrset->getName()); } - } else if (domain->find(RRType::CNAME()) != domain->end()) { + } else if (rrset->getType() != RRType::NSEC() && + domain->find(RRType::CNAME()) != domain->end()) { LOG_ERROR(logger, DATASRC_MEM_CNAME_COEXIST).arg(rrset->getName()); isc_throw(AddError, "CNAME and " << rrset->getType() << " can't coexist for " << rrset->getName()); diff --git a/src/lib/datasrc/tests/memory_datasrc_unittest.cc b/src/lib/datasrc/tests/memory_datasrc_unittest.cc index d0d2bc72ed..91847aa640 100644 --- a/src/lib/datasrc/tests/memory_datasrc_unittest.cc +++ b/src/lib/datasrc/tests/memory_datasrc_unittest.cc @@ -559,6 +559,18 @@ TEST_F(InMemoryZoneFinderTest, addOtherThenCNAME) { EXPECT_THROW(zone_finder_.add(rr_cname_), InMemoryZoneFinder::AddError); } +TEST_F(InMemoryZoneFinderTest, addCNAMEThenDNSSECRecords) { + // CNAME and RRSIG can coexist + EXPECT_EQ(SUCCESS, zone_finder_.add(rr_cname_)); + zone_finder_.add(textToRRset("cname.example.org. 300 IN RRSIG CNAME 5 3 " + "3600 20000101000000 20000201000000 12345 " + "example.org. FAKEFAKEFAKE")); + + // Same for NSEC + zone_finder_.add(textToRRset("cname.example.org. 300 IN NSEC " + "dname.example.org. CNAME RRSIG NSEC")); +} + TEST_F(InMemoryZoneFinderTest, findCNAME) { // install CNAME RR EXPECT_EQ(SUCCESS, zone_finder_.add(rr_cname_));