diff --git a/src/lib/datasrc/memory/zone_finder.cc b/src/lib/datasrc/memory/zone_finder.cc index 56c4110b12..cb79e02c23 100644 --- a/src/lib/datasrc/memory/zone_finder.cc +++ b/src/lib/datasrc/memory/zone_finder.cc @@ -865,7 +865,8 @@ InMemoryZoneFinder::findInternal(const isc::dns::Name& name, const RdataSet* cur_rds = node->getData(); while (cur_rds != NULL) { target->push_back(createTreeNodeRRset(node, cur_rds, rrclass_, - options, &name)); + options, + wild ? &name : NULL)); cur_rds = cur_rds->getNext(); } LOG_DEBUG(logger, DBG_TRACE_DATA, DATASRC_MEM_ANY_SUCCESS). diff --git a/src/lib/datasrc/tests/memory/zone_finder_unittest.cc b/src/lib/datasrc/tests/memory/zone_finder_unittest.cc index e59013e8e0..e6ce73ea42 100644 --- a/src/lib/datasrc/tests/memory/zone_finder_unittest.cc +++ b/src/lib/datasrc/tests/memory/zone_finder_unittest.cc @@ -442,14 +442,23 @@ protected: } EXPECT_EQ((expected_flags & ZoneFinder::RESULT_WILDCARD) != 0, find_result->isWildcard()); - EXPECT_EQ((expected_flags & ZoneFinder::RESULT_NSEC_SIGNED) - != 0, find_result->isNSECSigned()); - EXPECT_EQ((expected_flags & ZoneFinder::RESULT_NSEC3_SIGNED) - != 0, find_result->isNSEC3Signed()); - // Convert all rrsets to 'full' ones before checking + EXPECT_EQ((expected_flags & ZoneFinder::RESULT_NSEC_SIGNED) != 0, + find_result->isNSECSigned()); + EXPECT_EQ((expected_flags & ZoneFinder::RESULT_NSEC3_SIGNED) != 0, + find_result->isNSEC3Signed()); + // Convert all rrsets to 'full' ones before checking. Also, confirm + // each RRset of the vector is of the "same kind" as one would be + // found by the find() method. std::vector converted_rrsets; BOOST_FOREACH(ConstRRsetPtr cur_rrset, target) { converted_rrsets.push_back(convertRRset(cur_rrset)); + + // As we know findAll() succeeded, this find() should also + // succeed, and the two sets should be "identical". + const ZoneFinderContextPtr result = + finder->find(name, cur_rrset->getType()); + ASSERT_TRUE(result->rrset); + EXPECT_TRUE(result->rrset->isSameKind(*cur_rrset)); } rrsetsCheck(expected_rrsets.begin(), expected_rrsets.end(), converted_rrsets.begin(), converted_rrsets.end());