From 3d9ea4721a668e8e94ad319b5c40d9404fa8beff Mon Sep 17 00:00:00 2001 From: Wouter Wijngaards Date: Wed, 27 Jun 2007 09:45:39 +0000 Subject: [PATCH] Deletion error removed. git-svn-id: file:///svn/unbound/trunk@425 be551aaa-1e26-0410-a405-d3ace91eadb9 --- doc/Changelog | 3 +++ services/mesh.c | 13 +++++++++---- services/outside_network.c | 1 - 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 079789134..2f7ff4c8a 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +27 June 2007: Wouter + - delete of mesh does a postorder traverse of the tree. + 26 June 2007: Wouter - mesh is called by worker, and iterator uses it. This removes the hierarchical code. diff --git a/services/mesh.c b/services/mesh.c index fa07f3285..c643c63fd 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -100,16 +100,21 @@ mesh_create(int num_modules, struct module_func_block** modfunc, return mesh; } +/** help mesh delete delete mesh states */ +static void +mesh_delete_helper(rbnode_t* n, void* ATTR_UNUSED(arg)) +{ + struct mesh_state* mstate = (struct mesh_state*)n->key; + mesh_state_cleanup(mstate); +} + void mesh_delete(struct mesh_area* mesh) { - struct mesh_state* mstate; if(!mesh) return; /* free all query states */ - RBTREE_FOR(mstate, struct mesh_state*, &mesh->all) { - mesh_state_cleanup(mstate); - } + traverse_postorder(&mesh->all, &mesh_delete_helper, NULL); free(mesh); } diff --git a/services/outside_network.c b/services/outside_network.c index 764965705..1a1ba2c95 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -1211,7 +1211,6 @@ outnet_serviced_query(struct outside_network* outnet, cb->cb_arg = callback_arg; cb->next = sq->cblist; sq->cblist = cb; - return sq; } -- 2.47.2