Skip to content

Fix change 6093 which broke rbtdb when it grew too large

Tony Finch requested to merge 3862-recusive-stress-crash into main

I misunderstood the purpose of the heap_index rdataset header member; I thought it identified which heap to use, and could therefore be smaller, the same size as locknum indexes. But in fact it is a position within a heap, so it needs to be able to count up to the total number of rdatasets in the rbtdb.

So this changes heap_index from uint16_t back to unsigned int.

To avoid re-embiggening the rdatasetheader, shrink the count member from uint32 to uint16. The count is used to rotate RRsets in dns_rdataset_towiresorted(), so 16 bits is more than large enough. This change also means we no longer need to avoid colliding with DNS_RDATASET_COUNT_UNDEFINED i.e. UINT32_MAX.

Closes #3862 (closed)

Merge request reports