Browse Source

closingd: ignore premature messages here, too.

Fixes the less common case where we reconnect during mutual close.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
pr-2587
Rusty Russell 6 years ago
parent
commit
0e8945f198
  1. 13
      closingd/closingd.c

13
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,

Loading…
Cancel
Save