]> git.ipfire.org Git - thirdparty/bind9.git/commit
Fix the dbiterator to assume only one qp-trie
authorMatthijs Mekking <matthijs@isc.org>
Mon, 26 May 2025 09:34:16 +0000 (11:34 +0200)
committerMatthijs Mekking <matthijs@isc.org>
Thu, 10 Jul 2025 13:52:59 +0000 (13:52 +0000)
commit61f8886fc32b0957b5d9cfc27f34ff22ded191a3
tree1a7f29ba87f030fc677e051384d3a9637c620073
parente4f25823a0119a269376781b5c15011fef481c16
Fix the dbiterator to assume only one qp-trie

The dbiterator can take three modes: full, nsec3only and nonsec3.
Previously, in full mode the dbiterator requires special logic to jump
from one qp-trie to the other. Now everything is in one trie, other
special logic is needed.

The qp-trie is now sorted in such a way that all the normal nodes come
first, followed by NSEC nodes, and finally the NSEC3 nodes. NSEC nodes
are empty nodes and need to be skipped when iterating.

We add an additional auxiliary node to the trie, an NSEC origin, so
we can easily find the point in the trie where we need to continue
iterating.
lib/dns/qpzone.c