]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
- fast-reload, in forwards_swap_tree set protection of trees with locks.
authorW.C.A. Wijngaards <wouter@nlnetlabs.nl>
Tue, 9 Jan 2024 11:09:39 +0000 (12:09 +0100)
committerW.C.A. Wijngaards <wouter@nlnetlabs.nl>
Tue, 9 Jan 2024 11:09:39 +0000 (12:09 +0100)
iterator/iter_fwd.c

index e2697bab4fdb8ff1a9e75a46d05191afbc3e416d..7954f865c7607b48c3b803502fa5413bea52cda3 100644 (file)
@@ -544,6 +544,14 @@ void
 forwards_swap_tree(struct iter_forwards* fwd, struct iter_forwards* data)
 {
        rbtree_type* oldtree = fwd->tree;
+       if(oldtree) {
+               lock_unprotect(&fwd->lock, oldtree);
+       }
+       if(data->tree) {
+               lock_unprotect(&data->lock, data->tree);
+       }
        fwd->tree = data->tree;
        data->tree = oldtree;
+       lock_protect(&fwd->lock, fwd->tree, sizeof(*fwd->tree));
+       lock_protect(&data->lock, data->tree, sizeof(*data->tree));
 }