From 88f3f97b7c627d771a297e98fdb991e61efad79c Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Thu, 12 Feb 2026 09:29:10 +1030 Subject: [PATCH] gossipd: reset dying_channels array after compact. Reported-by: @daywalker90 Signed-off-by: Rusty Russell --- gossipd/gossmap_manage.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/gossipd/gossmap_manage.c b/gossipd/gossmap_manage.c index 61ce44d87..ed11bafff 100644 --- a/gossipd/gossmap_manage.c +++ b/gossipd/gossmap_manage.c @@ -1613,13 +1613,17 @@ static void compactd_done(struct io_conn *unused, struct gossmap_manage *gm) status_debug("compaction done: %"PRIu64" -> %"PRIu64" bytes", gm->compactd->old_size, (u64)st.st_size); + /* We will reload dying_channels as we reopen */ + tal_free(gm->dying_channels); + gm->dying_channels = tal_arr(gm, struct chan_dying, 0); + /* Switch gossmap to new one, as a sanity check (rather than * writing end marker and letting it reopen) */ tal_free(gm->raw_gossmap); gm->raw_gossmap = gossmap_load_initial(gm, GOSSIP_STORE_COMPACT_FILENAME, st.st_size, gossmap_logcb, - NULL, + gossmap_add_dying_chan, gm); if (!gm->raw_gossmap) status_failed(STATUS_FAIL_INTERNAL_ERROR,