Skip to content

Commit 1bc190c

Browse files
committed
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.
1 parent a138a9a commit 1bc190c

File tree

1 file changed

+19
-0
lines changed

1 file changed

+19
-0
lines changed

src/ln/channelmanager.rs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2616,6 +2616,25 @@ impl ChannelMessageHandler for ChannelManager {
26162616
true
26172617
})
26182618
}
2619+
pending_msg_events.retain(|msg| {
2620+
match msg {
2621+
&events::MessageSendEvent::SendAcceptChannel { ref node_id, .. } => node_id != their_node_id,
2622+
&events::MessageSendEvent::SendOpenChannel { ref node_id, .. } => node_id != their_node_id,
2623+
&events::MessageSendEvent::SendFundingCreated { ref node_id, .. } => node_id != their_node_id,
2624+
&events::MessageSendEvent::SendFundingSigned { ref node_id, .. } => node_id != their_node_id,
2625+
&events::MessageSendEvent::SendFundingLocked { ref node_id, .. } => node_id != their_node_id,
2626+
&events::MessageSendEvent::SendAnnouncementSignatures { ref node_id, .. } => node_id != their_node_id,
2627+
&events::MessageSendEvent::UpdateHTLCs { ref node_id, .. } => node_id != their_node_id,
2628+
&events::MessageSendEvent::SendRevokeAndACK { ref node_id, .. } => node_id != their_node_id,
2629+
&events::MessageSendEvent::SendClosingSigned { ref node_id, .. } => node_id != their_node_id,
2630+
&events::MessageSendEvent::SendShutdown { ref node_id, .. } => node_id != their_node_id,
2631+
&events::MessageSendEvent::SendChannelReestablish { ref node_id, .. } => node_id != their_node_id,
2632+
&events::MessageSendEvent::BroadcastChannelAnnouncement { .. } => true,
2633+
&events::MessageSendEvent::BroadcastChannelUpdate { .. } => true,
2634+
&events::MessageSendEvent::HandleError { ref node_id, .. } => node_id != their_node_id,
2635+
&events::MessageSendEvent::PaymentFailureNetworkUpdate { .. } => true,
2636+
}
2637+
});
26192638
}
26202639
for failure in failed_channels.drain(..) {
26212640
self.finish_force_close_channel(failure);

0 commit comments

Comments
 (0)