diff --git a/closingd/closingd.c b/closingd/closingd.c index 85ed3107fc49..25bdb3691fb1 100644 --- a/closingd/closingd.c +++ b/closingd/closingd.c @@ -171,8 +171,17 @@ static void do_reconnect(struct crypto_state *cs, sync_crypto_write(cs, PEER_FD, take(msg)); /* They might have already send reestablish, which triggered us */ - if (!channel_reestablish) - channel_reestablish = closing_read_peer_msg(tmpctx, cs, channel_id); + if (!channel_reestablish) { + do { + tal_free(channel_reestablish); + channel_reestablish = closing_read_peer_msg(tmpctx, cs, + channel_id); + /* They *should* send reestablish first, but lnd + * sends other messages, which we can ignore since + * we're closing anyway... */ + } while (fromwire_peektype(channel_reestablish) + != WIRE_CHANNEL_REESTABLISH); + } if (!fromwire_channel_reestablish(channel_reestablish, &their_channel_id, &next_local_commitment_number,