@@ -64,7 +64,7 @@ use prelude::*;
64
64
use core:: { cmp, mem} ;
65
65
use core:: cell:: RefCell ;
66
66
use io:: Read ;
67
- use sync:: { Arc , Condvar , Mutex , MutexGuard , RwLock , RwLockReadGuard } ;
67
+ use sync:: { Arc , Condvar , Mutex , MutexGuard , RwLock , RwLockReadGuard , FairRwLock } ;
68
68
use core:: sync:: atomic:: { AtomicUsize , Ordering } ;
69
69
use core:: time:: Duration ;
70
70
use core:: ops:: Deref ;
@@ -791,9 +791,9 @@ pub struct ChannelManager<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref,
791
791
///
792
792
/// If also holding `channel_state` lock, must lock `channel_state` prior to `per_peer_state`.
793
793
#[ cfg( not( any( test, feature = "_test_utils" ) ) ) ]
794
- per_peer_state : RwLock < HashMap < PublicKey , Mutex < PeerState < Signer > > > > ,
794
+ per_peer_state : FairRwLock < HashMap < PublicKey , Mutex < PeerState < Signer > > > > ,
795
795
#[ cfg( any( test, feature = "_test_utils" ) ) ]
796
- pub ( super ) per_peer_state : RwLock < HashMap < PublicKey , Mutex < PeerState < Signer > > > > ,
796
+ pub ( super ) per_peer_state : FairRwLock < HashMap < PublicKey , Mutex < PeerState < Signer > > > > ,
797
797
798
798
pending_events : Mutex < Vec < events:: Event > > ,
799
799
pending_background_events : Mutex < Vec < BackgroundEvent > > ,
@@ -1631,7 +1631,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
1631
1631
last_node_announcement_serial : AtomicUsize :: new ( 0 ) ,
1632
1632
highest_seen_timestamp : AtomicUsize :: new ( 0 ) ,
1633
1633
1634
- per_peer_state : RwLock :: new ( HashMap :: new ( ) ) ,
1634
+ per_peer_state : FairRwLock :: new ( HashMap :: new ( ) ) ,
1635
1635
1636
1636
pending_events : Mutex :: new ( Vec :: new ( ) ) ,
1637
1637
pending_background_events : Mutex :: new ( Vec :: new ( ) ) ,
@@ -1729,7 +1729,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
1729
1729
1730
1730
let temporary_channel_id = channel. channel_id ( ) ;
1731
1731
let mut channel_state = self . channel_state . lock ( ) . unwrap ( ) ;
1732
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
1732
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
1733
1733
if let Some ( peer_state_mutex) = per_peer_state. get ( & their_network_key) {
1734
1734
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
1735
1735
let peer_state = & mut * peer_state_lock;
@@ -1867,7 +1867,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
1867
1867
let result: Result < ( ) , _ > = loop {
1868
1868
let mut channel_state_lock = self . channel_state . lock ( ) . unwrap ( ) ;
1869
1869
let channel_state = & mut * channel_state_lock;
1870
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
1870
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
1871
1871
if let Some ( peer_state_mutex) = per_peer_state. get ( counterparty_node_id) {
1872
1872
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
1873
1873
let peer_state = & mut * peer_state_lock;
@@ -1989,7 +1989,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
1989
1989
let mut chan = {
1990
1990
let mut channel_state_lock = self . channel_state . lock ( ) . unwrap ( ) ;
1991
1991
let channel_state = & mut * channel_state_lock;
1992
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
1992
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
1993
1993
if let Some ( peer_state_mutex) = per_peer_state. get ( peer_node_id) {
1994
1994
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
1995
1995
let peer_state = & mut * peer_state_lock;
@@ -2499,7 +2499,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
2499
2499
}
2500
2500
2501
2501
let channel_state = & mut * channel_lock;
2502
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
2502
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
2503
2503
if let Some ( peer_state_mutex) = per_peer_state. get ( & counterparty_node_id) {
2504
2504
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
2505
2505
let peer_state = & mut * peer_state_lock;
@@ -2846,7 +2846,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
2846
2846
) -> Result < ( ) , APIError > {
2847
2847
let ( chan, msg) = {
2848
2848
let ( res, chan) = {
2849
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
2849
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
2850
2850
if let Some ( peer_state_mutex) = per_peer_state. get ( counterparty_node_id) {
2851
2851
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
2852
2852
let peer_state = & mut * peer_state_lock;
@@ -2882,7 +2882,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
2882
2882
node_id : chan. get_counterparty_node_id ( ) ,
2883
2883
msg,
2884
2884
} ) ;
2885
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
2885
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
2886
2886
let chan_id = chan. channel_id ( ) ;
2887
2887
if let Some ( peer_state_mutex) = per_peer_state. get ( counterparty_node_id) {
2888
2888
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
@@ -3158,7 +3158,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
3158
3158
{
3159
3159
let mut channel_state_lock = self . channel_state . lock ( ) . unwrap ( ) ;
3160
3160
let channel_state = & mut * channel_state_lock;
3161
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
3161
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
3162
3162
3163
3163
for ( short_chan_id, mut pending_forwards) in channel_state. forward_htlcs . drain ( ) {
3164
3164
if short_chan_id != 0 {
@@ -3873,7 +3873,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
3873
3873
HTLCSource :: PreviousHopData ( HTLCPreviousHopData { .. } ) => {
3874
3874
let channel_state = self . channel_state . lock ( ) . unwrap ( ) ;
3875
3875
let ( failure_code, onion_failure_data) = {
3876
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
3876
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
3877
3877
if let Some ( peer_state_mutex) = per_peer_state. get ( counterparty_node_id) {
3878
3878
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
3879
3879
let peer_state = & mut * peer_state_lock;
@@ -4247,7 +4247,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
4247
4247
}
4248
4248
} ;
4249
4249
4250
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
4250
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
4251
4251
if let Some ( peer_state_mutex) = per_peer_state. get ( & counterparty_node_id) {
4252
4252
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
4253
4253
let peer_state = & mut * peer_state_lock;
@@ -4454,7 +4454,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
4454
4454
if counterparty_node_id. is_none ( ) {
4455
4455
return
4456
4456
}
4457
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
4457
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
4458
4458
let mut peer_state_lock;
4459
4459
let mut channel = {
4460
4460
if let Some ( peer_state_mutex) = per_peer_state. get ( & counterparty_node_id. unwrap ( ) ) {
@@ -4544,7 +4544,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
4544
4544
4545
4545
let mut channel_state_lock = self . channel_state . lock ( ) . unwrap ( ) ;
4546
4546
let channel_state = & mut * channel_state_lock;
4547
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
4547
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
4548
4548
if let Some ( peer_state_mutex) = per_peer_state. get ( counterparty_node_id) {
4549
4549
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
4550
4550
let peer_state = & mut * peer_state_lock;
@@ -4607,7 +4607,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
4607
4607
} ;
4608
4608
let mut channel_state_lock = self . channel_state . lock ( ) . unwrap ( ) ;
4609
4609
let channel_state = & mut * channel_state_lock;
4610
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
4610
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
4611
4611
if let Some ( peer_state_mutex) = per_peer_state. get ( counterparty_node_id) {
4612
4612
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
4613
4613
let peer_state = & mut * peer_state_lock;
@@ -4651,7 +4651,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
4651
4651
let ( value, output_script, user_id) = {
4652
4652
let mut channel_lock = self . channel_state . lock ( ) . unwrap ( ) ;
4653
4653
let channel_state = & mut * channel_lock;
4654
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
4654
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
4655
4655
if let Some ( peer_state_mutex) = per_peer_state. get ( counterparty_node_id) {
4656
4656
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
4657
4657
let peer_state = & mut * peer_state_lock;
@@ -4685,7 +4685,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
4685
4685
let best_block = * self . best_block . read ( ) . unwrap ( ) ;
4686
4686
let mut channel_lock = self . channel_state . lock ( ) . unwrap ( ) ;
4687
4687
let channel_state = & mut * channel_lock;
4688
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
4688
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
4689
4689
if let Some ( peer_state_mutex) = per_peer_state. get ( counterparty_node_id) {
4690
4690
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
4691
4691
let peer_state = & mut * peer_state_lock;
@@ -4769,7 +4769,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
4769
4769
let best_block = * self . best_block . read ( ) . unwrap ( ) ;
4770
4770
let mut channel_lock = self . channel_state . lock ( ) . unwrap ( ) ;
4771
4771
let channel_state = & mut * channel_lock;
4772
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
4772
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
4773
4773
if let Some ( peer_state_mutex) = per_peer_state. get ( counterparty_node_id) {
4774
4774
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
4775
4775
let peer_state = & mut * peer_state_lock;
@@ -4813,7 +4813,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
4813
4813
fn internal_channel_ready ( & self , counterparty_node_id : & PublicKey , msg : & msgs:: ChannelReady ) -> Result < ( ) , MsgHandleErrInternal > {
4814
4814
let mut channel_state_lock = self . channel_state . lock ( ) . unwrap ( ) ;
4815
4815
let channel_state = & mut * channel_state_lock;
4816
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
4816
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
4817
4817
if let Some ( peer_state_mutex) = per_peer_state. get ( counterparty_node_id) {
4818
4818
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
4819
4819
let peer_state = & mut * peer_state_lock;
@@ -4859,7 +4859,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
4859
4859
let mut channel_state_lock = self . channel_state . lock ( ) . unwrap ( ) ;
4860
4860
let channel_state = & mut * channel_state_lock;
4861
4861
4862
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
4862
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
4863
4863
if let Some ( peer_state_mutex) = per_peer_state. get ( counterparty_node_id) {
4864
4864
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
4865
4865
let peer_state = & mut * peer_state_lock;
@@ -4917,7 +4917,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
4917
4917
let ( tx, chan_option) = {
4918
4918
let mut channel_state_lock = self . channel_state . lock ( ) . unwrap ( ) ;
4919
4919
let channel_state = & mut * channel_state_lock;
4920
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
4920
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
4921
4921
if let Some ( peer_state_mutex) = per_peer_state. get ( counterparty_node_id) {
4922
4922
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
4923
4923
let peer_state = & mut * peer_state_lock;
@@ -4977,7 +4977,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
4977
4977
let ( pending_forward_info, mut channel_state_lock) = self . decode_update_add_htlc_onion ( msg) ;
4978
4978
let channel_state = & mut * channel_state_lock;
4979
4979
4980
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
4980
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
4981
4981
if let Some ( peer_state_mutex) = per_peer_state. get ( counterparty_node_id) {
4982
4982
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
4983
4983
let peer_state = & mut * peer_state_lock;
@@ -5023,7 +5023,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
5023
5023
let mut channel_lock = self . channel_state . lock ( ) . unwrap ( ) ;
5024
5024
let ( htlc_source, forwarded_htlc_value) = {
5025
5025
let channel_state = & mut * channel_lock;
5026
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
5026
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
5027
5027
if let Some ( peer_state_mutex) = per_peer_state. get ( counterparty_node_id) {
5028
5028
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
5029
5029
let peer_state = & mut * peer_state_lock;
@@ -5047,7 +5047,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
5047
5047
fn internal_update_fail_htlc ( & self , counterparty_node_id : & PublicKey , msg : & msgs:: UpdateFailHTLC ) -> Result < ( ) , MsgHandleErrInternal > {
5048
5048
let mut channel_lock = self . channel_state . lock ( ) . unwrap ( ) ;
5049
5049
let channel_state = & mut * channel_lock;
5050
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
5050
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
5051
5051
if let Some ( peer_state_mutex) = per_peer_state. get ( counterparty_node_id) {
5052
5052
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
5053
5053
let peer_state = & mut * peer_state_lock;
@@ -5069,7 +5069,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
5069
5069
fn internal_update_fail_malformed_htlc ( & self , counterparty_node_id : & PublicKey , msg : & msgs:: UpdateFailMalformedHTLC ) -> Result < ( ) , MsgHandleErrInternal > {
5070
5070
let mut channel_lock = self . channel_state . lock ( ) . unwrap ( ) ;
5071
5071
let channel_state = & mut * channel_lock;
5072
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
5072
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
5073
5073
if let Some ( peer_state_mutex) = per_peer_state. get ( counterparty_node_id) {
5074
5074
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
5075
5075
let peer_state = & mut * peer_state_lock;
@@ -5095,7 +5095,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
5095
5095
fn internal_commitment_signed ( & self , counterparty_node_id : & PublicKey , msg : & msgs:: CommitmentSigned ) -> Result < ( ) , MsgHandleErrInternal > {
5096
5096
let mut channel_state_lock = self . channel_state . lock ( ) . unwrap ( ) ;
5097
5097
let channel_state = & mut * channel_state_lock;
5098
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
5098
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
5099
5099
if let Some ( peer_state_mutex) = per_peer_state. get ( counterparty_node_id) {
5100
5100
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
5101
5101
let peer_state = & mut * peer_state_lock;
@@ -5187,7 +5187,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
5187
5187
let res = loop {
5188
5188
let mut channel_state_lock = self . channel_state . lock ( ) . unwrap ( ) ;
5189
5189
let channel_state = & mut * channel_state_lock;
5190
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
5190
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
5191
5191
if let Some ( peer_state_mutex) = per_peer_state. get ( counterparty_node_id) {
5192
5192
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
5193
5193
let peer_state = & mut * peer_state_lock;
@@ -5254,7 +5254,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
5254
5254
fn internal_update_fee ( & self , counterparty_node_id : & PublicKey , msg : & msgs:: UpdateFee ) -> Result < ( ) , MsgHandleErrInternal > {
5255
5255
let mut channel_lock = self . channel_state . lock ( ) . unwrap ( ) ;
5256
5256
let channel_state = & mut * channel_lock;
5257
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
5257
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
5258
5258
if let Some ( peer_state_mutex) = per_peer_state. get ( counterparty_node_id) {
5259
5259
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
5260
5260
let peer_state = & mut * peer_state_lock;
@@ -5277,7 +5277,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
5277
5277
let mut channel_state_lock = self . channel_state . lock ( ) . unwrap ( ) ;
5278
5278
let channel_state = & mut * channel_state_lock;
5279
5279
5280
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
5280
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
5281
5281
if let Some ( peer_state_mutex) = per_peer_state. get ( counterparty_node_id) {
5282
5282
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
5283
5283
let peer_state = & mut * peer_state_lock;
@@ -5317,7 +5317,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
5317
5317
return Ok ( NotifyOption :: SkipPersist )
5318
5318
}
5319
5319
} ;
5320
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
5320
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
5321
5321
if let Some ( peer_state_mutex) = per_peer_state. get ( chan_counterparty_node_id) {
5322
5322
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
5323
5323
let peer_state = & mut * peer_state_lock;
@@ -5352,7 +5352,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
5352
5352
let mut channel_state_lock = self . channel_state . lock ( ) . unwrap ( ) ;
5353
5353
let channel_state = & mut * channel_state_lock;
5354
5354
5355
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
5355
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
5356
5356
if let Some ( peer_state_mutex) = per_peer_state. get ( counterparty_node_id) {
5357
5357
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
5358
5358
let peer_state = & mut * peer_state_lock;
@@ -5435,7 +5435,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
5435
5435
id_to_peer. get ( & funding_outpoint. to_channel_id ( ) ) . cloned ( )
5436
5436
} ;
5437
5437
if let Some ( counterparty_node_id) = counterparty_node_id_opt {
5438
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
5438
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
5439
5439
let pending_msg_events = & mut channel_state. pending_msg_events ;
5440
5440
if let Some ( peer_state_mutex) = per_peer_state. get ( & counterparty_node_id) {
5441
5441
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
@@ -6447,7 +6447,7 @@ impl<Signer: Sign, M: Deref , T: Deref , K: Deref , F: Deref , L: Deref >
6447
6447
{
6448
6448
// First check if we can advance the channel type and try again.
6449
6449
let mut channel_state = self . channel_state . lock ( ) . unwrap ( ) ;
6450
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
6450
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
6451
6451
if let Some ( peer_state_mutex) = per_peer_state. get ( counterparty_node_id) {
6452
6452
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
6453
6453
let peer_state = & mut * peer_state_lock;
@@ -6901,7 +6901,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> Writeable f
6901
6901
let channel_state = self . channel_state . lock ( ) . unwrap ( ) ;
6902
6902
let mut htlc_purposes: Vec < & events:: PaymentPurpose > = Vec :: new ( ) ;
6903
6903
{
6904
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
6904
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
6905
6905
let mut unfunded_channels = 0 ;
6906
6906
let mut number_of_channels = 0 ;
6907
6907
for ( _, peer_state_mutex) in per_peer_state. iter ( ) {
@@ -7573,7 +7573,7 @@ impl<'a, Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref>
7573
7573
last_node_announcement_serial : AtomicUsize :: new ( last_node_announcement_serial as usize ) ,
7574
7574
highest_seen_timestamp : AtomicUsize :: new ( highest_seen_timestamp as usize ) ,
7575
7575
7576
- per_peer_state : RwLock :: new ( per_peer_state) ,
7576
+ per_peer_state : FairRwLock :: new ( per_peer_state) ,
7577
7577
7578
7578
pending_events : Mutex :: new ( pending_events_read) ,
7579
7579
pending_background_events : Mutex :: new ( pending_background_events_read) ,
0 commit comments