mirror of
https://github.com/lightningdevkit/rust-lightning.git
synced 2025-02-25 15:20:24 +01:00
Drop pending outbound messages on peer disconnection
This shouldn't be required, but it may help prevent some downstream race conditions due to clients not sending message events quickly enough and trying to send stale messages before new channel_reestablish messages.
This commit is contained in:
parent
a138a9af01
commit
1bc190c760
1 changed files with 19 additions and 0 deletions
|
@ -2616,6 +2616,25 @@ impl ChannelMessageHandler for ChannelManager {
|
|||
true
|
||||
})
|
||||
}
|
||||
pending_msg_events.retain(|msg| {
|
||||
match msg {
|
||||
&events::MessageSendEvent::SendAcceptChannel { ref node_id, .. } => node_id != their_node_id,
|
||||
&events::MessageSendEvent::SendOpenChannel { ref node_id, .. } => node_id != their_node_id,
|
||||
&events::MessageSendEvent::SendFundingCreated { ref node_id, .. } => node_id != their_node_id,
|
||||
&events::MessageSendEvent::SendFundingSigned { ref node_id, .. } => node_id != their_node_id,
|
||||
&events::MessageSendEvent::SendFundingLocked { ref node_id, .. } => node_id != their_node_id,
|
||||
&events::MessageSendEvent::SendAnnouncementSignatures { ref node_id, .. } => node_id != their_node_id,
|
||||
&events::MessageSendEvent::UpdateHTLCs { ref node_id, .. } => node_id != their_node_id,
|
||||
&events::MessageSendEvent::SendRevokeAndACK { ref node_id, .. } => node_id != their_node_id,
|
||||
&events::MessageSendEvent::SendClosingSigned { ref node_id, .. } => node_id != their_node_id,
|
||||
&events::MessageSendEvent::SendShutdown { ref node_id, .. } => node_id != their_node_id,
|
||||
&events::MessageSendEvent::SendChannelReestablish { ref node_id, .. } => node_id != their_node_id,
|
||||
&events::MessageSendEvent::BroadcastChannelAnnouncement { .. } => true,
|
||||
&events::MessageSendEvent::BroadcastChannelUpdate { .. } => true,
|
||||
&events::MessageSendEvent::HandleError { ref node_id, .. } => node_id != their_node_id,
|
||||
&events::MessageSendEvent::PaymentFailureNetworkUpdate { .. } => true,
|
||||
}
|
||||
});
|
||||
}
|
||||
for failure in failed_channels.drain(..) {
|
||||
self.finish_force_close_channel(failure);
|
||||
|
|
Loading…
Add table
Reference in a new issue