From 9132a097b5255eeaeef6ea5e6a927747d64475ed Mon Sep 17 00:00:00 2001 From: Christian Decker Date: Wed, 28 Mar 2018 12:14:01 +0200 Subject: [PATCH] gossip: Free the channel when notified of its funding being spent Signed-off-by: Christian Decker --- gossipd/gossip.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/gossipd/gossip.c b/gossipd/gossip.c index beea84a1d..1b09b6fc2 100644 --- a/gossipd/gossip.c +++ b/gossipd/gossip.c @@ -1991,6 +1991,24 @@ static struct io_plan *handle_outpoint_spent(struct io_conn *conn, struct daemon *daemon, const u8 *msg) { + struct short_channel_id scid; + struct chan *chan; + struct routing_state *rstate = daemon->rstate; + if (!fromwire_gossip_outpoint_spent(msg, &scid)) + master_badmsg(WIRE_GOSSIP_ROUTING_FAILURE, msg); + + chan = get_channel(rstate, &scid); + if (chan) { + status_trace( + "Deleting channel %s due to the funding outpoint being " + "spent", + type_to_string(msg, struct short_channel_id, &scid)); + /* Freeing is sufficient since everything else is allocated off + * of the channel and the destructor takes care of unregistering + * the channel */ + tal_free(chan); + } + return daemon_conn_read_next(conn, &daemon->master); }