Skip to content

Commit 289649a

Browse files
committed
Adding NSEC3 records to IDELEG when there is no data (or NXDOMAIN)
1 parent 050ef67 commit 289649a

File tree

1 file changed

+24
-0
lines changed

1 file changed

+24
-0
lines changed

query.c

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -946,6 +946,30 @@ answer_delegation(query_type *query, answer_type *answer, const struct nsd* nsd)
946946
query->ideleg_domain, rrset);
947947
}
948948
else if (!query->edns.dnssec_ok || !zone_is_secure(query->zone)){}
949+
#ifdef NSEC3
950+
else if (query->zone->nsec3_param)
951+
{
952+
if (query->ideleg_domain)
953+
{
954+
if ((rrset = domain_find_rrset(query->ideleg_domain->nsec3->nsec3_cover, query->zone, TYPE_NSEC3)))
955+
{
956+
add_rrset(query, answer, AUTHORITY_SECTION,
957+
query->ideleg_domain->nsec3->nsec3_cover, rrset);
958+
}
959+
}
960+
else
961+
{
962+
domain_type* ideleg_closest_match;
963+
domain_type* ideleg_encloser;
964+
namedb_lookup(nsd->db, ideleg_dname, &ideleg_closest_match, &ideleg_encloser);
965+
if ((rrset = domain_find_rrset(ideleg_closest_match->nsec3->nsec3_cover, query->zone, TYPE_NSEC3)))
966+
{
967+
add_rrset(query, answer, AUTHORITY_SECTION,
968+
ideleg_closest_match->nsec3->nsec3_cover, rrset);
969+
}
970+
}
971+
}
972+
#endif
949973
else if (!query->ideleg_domain)
950974
{
951975
domain_type* ideleg_closest_match;

0 commit comments

Comments
 (0)