@@ -1749,6 +1749,12 @@ where
1749
1749
. collect ( )
1750
1750
}
1751
1751
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
+
1752
1758
/// Helper function that issues the channel close events
1753
1759
fn issue_channel_close_events ( & self , channel : & Channel < <SP :: Target as SignerProvider >:: Signer > , closure_reason : ClosureReason ) {
1754
1760
let mut pending_events_lock = self . pending_events . lock ( ) . unwrap ( ) ;
@@ -6965,13 +6971,17 @@ where
6965
6971
best_block. block_hash ( ) . write ( writer) ?;
6966
6972
}
6967
6973
6974
+ let mut peers_to_searialize_count: u64 = 0 ;
6968
6975
{
6969
6976
let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
6970
6977
let mut unfunded_channels = 0 ;
6971
6978
let mut number_of_channels = 0 ;
6972
6979
for ( _, peer_state_mutex) in per_peer_state. iter ( ) {
6973
6980
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
6974
6981
let peer_state = & mut * peer_state_lock;
6982
+ if !self . ok_to_disconnected ( peer_state) {
6983
+ peers_to_searialize_count += 1 ;
6984
+ }
6975
6985
number_of_channels += peer_state. channel_by_id . len ( ) ;
6976
6986
for ( _, channel) in peer_state. channel_by_id . iter ( ) {
6977
6987
if !channel. is_funding_initiated ( ) {
@@ -7022,11 +7032,14 @@ where
7022
7032
htlc_purposes. push ( purpose) ;
7023
7033
}
7024
7034
7025
- ( per_peer_state . len ( ) as u64 ) . write ( writer) ?;
7035
+ ( peers_to_searialize_count ) . write ( writer) ?;
7026
7036
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
+ }
7030
7043
}
7031
7044
7032
7045
let events = self . pending_events . lock ( ) . unwrap ( ) ;
0 commit comments