bind9/lib
Michał Kępień cb9928aaeb
Gracefully handle resending a node to prune_tree()
Commit 801e888d03 made the prune_tree()
function use send_to_prune_tree() for triggering pruning of deleted leaf
nodes' parents.  This enabled the following sequence of events to
happen:

 1. Node A, which is a leaf node, is passed to send_to_prune_tree() and
    its pruning is queued.

 2. Node B is added to the RBTDB as a child of node A before the latter
    gets pruned.

 3. Node B, which is now a leaf node itself (and is likely to belong to
    a different node bucket than node A), is passed to
    send_to_prune_tree() and its pruning gets queued.

 4. Node B gets pruned.  Its parent, node A, now becomes a leaf again
    and therefore the prune_tree() call that handled node B calls
    send_to_prune_tree() for node A.

 5. Since node A was already queued for pruning in step 1 (but not yet
    pruned), the INSIST(!ISC_LINK_LINKED(node, prunelink)); assertion
    fails for node A in send_to_prune_tree().

The above sequence of events is not a sign of pathological behavior.
Replace the assertion check with a conditional early return from
send_to_prune_tree().

(cherry picked from commit f6289ad931)
2024-02-29 18:06:12 +01:00
..
bind9 Deprecate AES algorithm for DNS cookies 2023-12-05 10:56:19 +01:00
dns Gracefully handle resending a node to prune_tree() 2024-02-29 18:06:12 +01:00
irs Properly process extra nameserver lines in resolv.conf 2023-05-18 08:52:17 +10:00
isc Fix case insensitive matching in isc_ht hash table implementation 2024-02-11 11:57:58 +01:00
isccc Limit isccc_cc_fromwire recursion depth 2023-09-05 20:29:27 +02:00
isccfg Reformat sources with up-to-date clang-format-17 2023-11-13 17:15:55 +01:00
ns Restore dns64 state during serve-stale processing 2024-01-05 12:24:05 +01:00
win32/bindevt Update the copyright information in all files in the repository 2022-01-11 12:22:09 +01:00
.gitignore added gitignore, removed cvsignore 2012-03-03 23:10:05 -08:00
Kyuafile Update the copyright information in all files in the repository 2022-01-11 12:22:09 +01:00
Makefile.in Update the copyright information in all files in the repository 2022-01-11 12:22:09 +01:00