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;
}

View File

@@ -278,13 +278,6 @@ int main(int argc, char *argv[])
if (route_lengths[i])
printf(" Length %zu: %zu\n", i, route_lengths[i]);
/* 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);
tal_free(tmpctx);
secp256k1_context_destroy(secp256k1_ctx);
opt_free_table();

View File

@@ -261,13 +261,6 @@ int main(void)
ROUTING_MAX_HOPS, &fee);
assert(!route);
/* 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);
tal_free(tmpctx);
secp256k1_context_destroy(secp256k1_ctx);
return 0;

View File

@@ -278,13 +278,6 @@ int main(void)
assert(channel_is_between(route[1], &d, &c));
assert(amount_msat_eq(fee, AMOUNT_MSAT(0 + 6)));
/* 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);
tal_free(tmpctx);
secp256k1_context_destroy(secp256k1_ctx);
return 0;

View File

@@ -197,13 +197,6 @@ int main(void)
last_fee = fee;
}
/* 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);
tal_free(tmpctx);
secp256k1_context_destroy(secp256k1_ctx);
return 0;