From: Wouter Wijngaards Date: Wed, 27 Jun 2007 09:45:39 +0000 (+0000) Subject: Deletion error removed. X-Git-Tag: release-0.4~41 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3d9ea4721a668e8e94ad319b5c40d9404fa8beff;p=thirdparty%2Funbound.git Deletion error removed. git-svn-id: file:///svn/unbound/trunk@425 be551aaa-1e26-0410-a405-d3ace91eadb9 --- 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; }