]> git.ipfire.org Git - thirdparty/bind9.git/commit
Drop in-domain NS without glue from the delegation set
authorOndřej Surý <ondrej@isc.org>
Wed, 6 May 2026 10:37:03 +0000 (12:37 +0200)
committerOndřej Surý <ondrej@isc.org>
Fri, 15 May 2026 05:26:38 +0000 (07:26 +0200)
commit28483b3b73a2a06bd55713cfc32cff0e9e552138
tree9c637db1e0235c7563dd3027b8bd39869d098630
parentef405bfa6dce617908bb581812dad4cdd2d7f805
Drop in-domain NS without glue from the delegation set

Pull the dns_message_findname() lookups into cache_delegglue() and
cache_delegglue6() so each helper now owns its glue lookup and returns
the number of addresses cached.  cache_delegns() splits referrals into
two cases: in-domain (the NS name is below the delegation point) and
sibling/in-bailiwick.

An in-domain NS without glue is unresolvable by definition - the
resolver would have to ask the very server it's trying to find.  Log
"missing mandatory glue" at notice level and skip the deleg entirely
rather than leaving an unusable entry in the set.  A new
dns_delegset_freedeleg() undoes a fresh dns_delegset_allocdeleg() so
the rest of the delegation set is preserved.
bin/tests/system/expiredglue/tests_expiredglue.py
lib/dns/deleg.c
lib/dns/include/dns/deleg.h
lib/dns/resolver.c