@@ -1749,6 +1749,12 @@ where
17491749 . collect ( )
17501750 }
17511751
1752+ // Indicates that a peer meets the criteria where we're ok to disconnect the peer and remove it
1753+ // from our storage
1754+ fn ok_to_disconnected ( & self , peer : & PeerState < <SP :: Target as SignerProvider >:: Signer > ) -> bool {
1755+ peer. channel_by_id . len ( ) == 0
1756+ }
1757+
17521758 /// Helper function that issues the channel close events
17531759 fn issue_channel_close_events ( & self , channel : & Channel < <SP :: Target as SignerProvider >:: Signer > , closure_reason : ClosureReason ) {
17541760 let mut pending_events_lock = self . pending_events . lock ( ) . unwrap ( ) ;
@@ -6965,13 +6971,17 @@ where
69656971 best_block. block_hash ( ) . write ( writer) ?;
69666972 }
69676973
6974+ let mut peers_to_searialize_count: u64 = 0 ;
69686975 {
69696976 let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
69706977 let mut unfunded_channels = 0 ;
69716978 let mut number_of_channels = 0 ;
69726979 for ( _, peer_state_mutex) in per_peer_state. iter ( ) {
69736980 let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
69746981 let peer_state = & mut * peer_state_lock;
6982+ if !self . ok_to_disconnected ( peer_state) {
6983+ peers_to_searialize_count += 1 ;
6984+ }
69756985 number_of_channels += peer_state. channel_by_id . len ( ) ;
69766986 for ( _, channel) in peer_state. channel_by_id . iter ( ) {
69776987 if !channel. is_funding_initiated ( ) {
@@ -7022,11 +7032,14 @@ where
70227032 htlc_purposes. push ( purpose) ;
70237033 }
70247034
7025- ( per_peer_state . len ( ) as u64 ) . write ( writer) ?;
7035+ ( peers_to_searialize_count ) . write ( writer) ?;
70267036 for ( peer_pubkey, peer_state_mutex) in per_peer_state. iter ( ) {
7027- peer_pubkey. write ( writer) ?;
7028- let peer_state = peer_state_mutex. lock ( ) . unwrap ( ) ;
7029- peer_state. latest_features . write ( writer) ?;
7037+ let peer_state_lock= peer_state_mutex. lock ( ) . unwrap ( ) ;
7038+ let peer_state = & * peer_state_lock;
7039+ if !self . ok_to_disconnected ( peer_state) {
7040+ peer_pubkey. write ( writer) ?;
7041+ peer_state. latest_features . write ( writer) ?;
7042+ }
70307043 }
70317044
70327045 let events = self . pending_events . lock ( ) . unwrap ( ) ;
0 commit comments