Skip to content

Commit 9c0989f

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 ec9ff62 commit 9c0989f

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
@@ -2603,6 +2603,25 @@ impl ChannelMessageHandler for ChannelManager {
26032603
true
26042604
})
26052605
}
2606+
pending_msg_events.retain(|msg| {
2607+
match msg {
2608+
events::MessageSendEvent::SendAcceptChannel { ref node_id, .. } => node_id != their_node_id,
2609+
events::MessageSendEvent::SendOpenChannel { ref node_id, .. } => node_id != their_node_id,
2610+
events::MessageSendEvent::SendFundingCreated { ref node_id, .. } => node_id != their_node_id,
2611+
events::MessageSendEvent::SendFundingSigned { ref node_id, .. } => node_id != their_node_id,
2612+
events::MessageSendEvent::SendFundingLocked { ref node_id, .. } => node_id != their_node_id,
2613+
events::MessageSendEvent::SendAnnouncementSignatures { ref node_id, .. } => node_id != their_node_id,
2614+
events::MessageSendEvent::UpdateHTLCs { ref node_id, .. } => node_id != their_node_id,
2615+
events::MessageSendEvent::SendRevokeAndACK { ref node_id, .. } => node_id != their_node_id,
2616+
events::MessageSendEvent::SendClosingSigned { ref node_id, .. } => node_id != their_node_id,
2617+
events::MessageSendEvent::SendShutdown { ref node_id, .. } => node_id != their_node_id,
2618+
events::MessageSendEvent::SendChannelReestablish { ref node_id, .. } => node_id != their_node_id,
2619+
events::MessageSendEvent::BroadcastChannelAnnouncement { .. } => true,
2620+
events::MessageSendEvent::BroadcastChannelUpdate { .. } => true,
2621+
events::MessageSendEvent::HandleError { ref node_id, .. } => node_id != their_node_id,
2622+
events::MessageSendEvent::PaymentFailureNetworkUpdate { .. } => true,
2623+
}
2624+
});
26062625
}
26072626
for failure in failed_channels.drain(..) {
26082627
self.finish_force_close_channel(failure);

0 commit comments

Comments
 (0)