gossipd: free channels in routing_state destructor.

Cleans up the tests.

Suggested-by: @ZmnSCPxj
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
Rusty Russell
2019-05-21 16:44:09 +09:30
parent d1f43d993a
commit 654e89b5fc
5 changed files with 11 additions and 28 deletions

View File

@@ -154,6 +154,16 @@ struct chan *next_chan(const struct node *node, struct chan_map_iter *i)
return chan_map_next(&node->chans.map, i);
}
static void destroy_routing_state(struct routing_state *rstate)
{
/* Since we omitted destructors on these, clean up manually */
u64 idx;
for (struct chan *chan = uintmap_first(&rstate->chanmap, &idx);
chan;
chan = uintmap_after(&rstate->chanmap, &idx))
free_chan(rstate, chan);
}
struct routing_state *new_routing_state(const tal_t *ctx,
const struct chainparams *chainparams,
const struct node_id *local_id,
@@ -188,6 +198,7 @@ struct routing_state *new_routing_state(const tal_t *ctx,
} else
rstate->gossip_time = NULL;
#endif
tal_add_destructor(rstate, destroy_routing_state);
return rstate;
}