@@ -342,6 +342,16 @@ static u32 get_timestamp(struct gossmap *gossmap,
342342 return timestamp ;
343343}
344344
345+ static bool channel_already_dying (const struct chan_dying dying_channels [],
346+ struct short_channel_id scid )
347+ {
348+ for (size_t i = 0 ; i < tal_count (dying_channels ); i ++ ) {
349+ if (short_channel_id_eq (dying_channels [i ].scid , scid ))
350+ return true;
351+ }
352+ return false;
353+ }
354+
345355/* Every half a week we look for dead channels (faster in dev) */
346356static void prune_network (struct gossmap_manage * gm )
347357{
@@ -379,6 +389,10 @@ static void prune_network(struct gossmap_manage *gm)
379389
380390 scid = gossmap_chan_scid (gossmap , chan );
381391
392+ /* If it's dying anyway, don't bother pruning. */
393+ if (channel_already_dying (gm -> dying_channels , scid ))
394+ continue ;
395+
382396 /* Is it one of mine? */
383397 if (gossmap_nth_node (gossmap , chan , 0 ) == me
384398 || gossmap_nth_node (gossmap , chan , 1 ) == me ) {
@@ -1306,10 +1320,8 @@ void gossmap_manage_channel_spent(struct gossmap_manage *gm,
13061320 }
13071321
13081322 /* Is it already dying? It's lightningd re-telling us */
1309- for (size_t i = 0 ; i < tal_count (gm -> dying_channels ); i ++ ) {
1310- if (short_channel_id_eq (gm -> dying_channels [i ].scid , scid ))
1311- return ;
1312- }
1323+ if (channel_already_dying (gm -> dying_channels , scid ))
1324+ return ;
13131325
13141326 /* BOLT #7:
13151327 * - once its funding output has been spent OR reorganized out:
0 commit comments