@@ -342,6 +342,16 @@ static u32 get_timestamp(struct gossmap *gossmap,
342
342
return timestamp ;
343
343
}
344
344
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
+
345
355
/* Every half a week we look for dead channels (faster in dev) */
346
356
static void prune_network (struct gossmap_manage * gm )
347
357
{
@@ -379,6 +389,10 @@ static void prune_network(struct gossmap_manage *gm)
379
389
380
390
scid = gossmap_chan_scid (gossmap , chan );
381
391
392
+ /* If it's dying anyway, don't bother pruning. */
393
+ if (channel_already_dying (gm -> dying_channels , scid ))
394
+ continue ;
395
+
382
396
/* Is it one of mine? */
383
397
if (gossmap_nth_node (gossmap , chan , 0 ) == me
384
398
|| gossmap_nth_node (gossmap , chan , 1 ) == me ) {
@@ -1290,10 +1304,8 @@ void gossmap_manage_channel_spent(struct gossmap_manage *gm,
1290
1304
}
1291
1305
1292
1306
/* Is it already dying? It's lightningd re-telling us */
1293
- for (size_t i = 0 ; i < tal_count (gm -> dying_channels ); i ++ ) {
1294
- if (short_channel_id_eq (gm -> dying_channels [i ].scid , scid ))
1295
- return ;
1296
- }
1307
+ if (channel_already_dying (gm -> dying_channels , scid ))
1308
+ return ;
1297
1309
1298
1310
/* BOLT #7:
1299
1311
* - once its funding output has been spent OR reorganized out:
0 commit comments