@@ -1691,6 +1691,12 @@ where
1691
1691
self . list_channels_with_filter ( |& ( _, ref channel) | channel. is_live ( ) )
1692
1692
}
1693
1693
1694
+ // Indicates that a peer meets the criteria where we're ok to disconnect the peer and remove it
1695
+ // from our storage
1696
+ fn ok_to_disconnected ( & self , peer : & PeerState < <SP :: Target as SignerProvider >:: Signer > ) -> bool {
1697
+ peer. channel_by_id . len ( ) == 0
1698
+ }
1699
+
1694
1700
/// Helper function that issues the channel close events
1695
1701
fn issue_channel_close_events ( & self , channel : & Channel < <SP :: Target as SignerProvider >:: Signer > , closure_reason : ClosureReason ) {
1696
1702
let mut pending_events_lock = self . pending_events . lock ( ) . unwrap ( ) ;
@@ -6875,13 +6881,17 @@ where
6875
6881
best_block. block_hash ( ) . write ( writer) ?;
6876
6882
}
6877
6883
6884
+ let mut peers_to_searialize_count: u64 = 0 ;
6878
6885
{
6879
6886
let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
6880
6887
let mut unfunded_channels = 0 ;
6881
6888
let mut number_of_channels = 0 ;
6882
6889
for ( _, peer_state_mutex) in per_peer_state. iter ( ) {
6883
6890
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
6884
6891
let peer_state = & mut * peer_state_lock;
6892
+ if !self . ok_to_disconnected ( peer_state) {
6893
+ peers_to_searialize_count += 1 ;
6894
+ }
6885
6895
number_of_channels += peer_state. channel_by_id . len ( ) ;
6886
6896
for ( _, channel) in peer_state. channel_by_id . iter ( ) {
6887
6897
if !channel. is_funding_initiated ( ) {
@@ -6932,11 +6942,14 @@ where
6932
6942
htlc_purposes. push ( purpose) ;
6933
6943
}
6934
6944
6935
- ( per_peer_state . len ( ) as u64 ) . write ( writer) ?;
6945
+ ( peers_to_searialize_count ) . write ( writer) ?;
6936
6946
for ( peer_pubkey, peer_state_mutex) in per_peer_state. iter ( ) {
6937
- peer_pubkey. write ( writer) ?;
6938
- let peer_state = peer_state_mutex. lock ( ) . unwrap ( ) ;
6939
- peer_state. latest_features . write ( writer) ?;
6947
+ let peer_state_lock= peer_state_mutex. lock ( ) . unwrap ( ) ;
6948
+ let peer_state = & * peer_state_lock;
6949
+ if !self . ok_to_disconnected ( peer_state) {
6950
+ peer_pubkey. write ( writer) ?;
6951
+ peer_state. latest_features . write ( writer) ?;
6952
+ }
6940
6953
}
6941
6954
6942
6955
let events = self . pending_events . lock ( ) . unwrap ( ) ;
0 commit comments