]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Delete trie during aggregator shutdown
authorIgor Putovny <igor.putovny@nic.cz>
Wed, 20 Sep 2023 11:05:49 +0000 (13:05 +0200)
committerIgor Putovny <igor.putovny@nic.cz>
Wed, 20 Sep 2023 11:05:49 +0000 (13:05 +0200)
proto/aggregator/aggregator.c

index ac290adf83d476a369faa9061ae61a8b252f3bf3..96cce78bccea294ba93b1e98a7d8fb73459f6ca4 100644 (file)
@@ -109,7 +109,24 @@ remove_node(struct trie_node *node)
 }
 
 static void
+delete_trie(struct trie_node *node)
 {
+  assert(node != NULL);
+
+  if (is_leaf(node))
+  {
+    remove_node(node);
+    return;
+  }
+
+  if (node->child[0])
+    delete_trie(node->child[0]);
+
+  if (node->child[1])
+    delete_trie(node->child[1]);
+
+  assert(is_leaf(node));
+  delete_trie(node);
 }
 
 /*
@@ -1242,6 +1259,9 @@ aggregator_shutdown(struct proto *P)
   }
   HASH_WALK_END;
 
+  delete_trie(p->root);
+  p->root = NULL;
+
   return PS_DOWN;
 }