@@ -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 ;
@@ -795,9 +795,9 @@ pub struct ChannelManager<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref,
795
795
///
796
796
/// If also holding `channel_state` lock, must lock `channel_state` prior to `per_peer_state`.
797
797
#[ cfg( not( any( test, feature = "_test_utils" ) ) ) ]
798
- per_peer_state : RwLock < HashMap < PublicKey , Mutex < PeerState < Signer > > > > ,
798
+ per_peer_state : FairRwLock < HashMap < PublicKey , Mutex < PeerState < Signer > > > > ,
799
799
#[ cfg( any( test, feature = "_test_utils" ) ) ]
800
- pub ( super ) per_peer_state : RwLock < HashMap < PublicKey , Mutex < PeerState < Signer > > > > ,
800
+ pub ( super ) per_peer_state : FairRwLock < HashMap < PublicKey , Mutex < PeerState < Signer > > > > ,
801
801
802
802
pending_events : Mutex < Vec < events:: Event > > ,
803
803
pending_background_events : Mutex < Vec < BackgroundEvent > > ,
@@ -1630,7 +1630,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
1630
1630
last_node_announcement_serial : AtomicUsize :: new ( 0 ) ,
1631
1631
highest_seen_timestamp : AtomicUsize :: new ( 0 ) ,
1632
1632
1633
- per_peer_state : RwLock :: new ( HashMap :: new ( ) ) ,
1633
+ per_peer_state : FairRwLock :: new ( HashMap :: new ( ) ) ,
1634
1634
1635
1635
pending_events : Mutex :: new ( Vec :: new ( ) ) ,
1636
1636
pending_background_events : Mutex :: new ( Vec :: new ( ) ) ,
@@ -1728,7 +1728,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
1728
1728
1729
1729
let temporary_channel_id = channel. channel_id ( ) ;
1730
1730
let mut channel_state = self . channel_state . lock ( ) . unwrap ( ) ;
1731
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
1731
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
1732
1732
if let Some ( peer_state_mutex) = per_peer_state. get ( & their_network_key) {
1733
1733
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
1734
1734
let peer_state = & mut * peer_state_lock;
@@ -1865,7 +1865,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
1865
1865
let result: Result < ( ) , _ > = loop {
1866
1866
let mut channel_state_lock = self . channel_state . lock ( ) . unwrap ( ) ;
1867
1867
let channel_state = & mut * channel_state_lock;
1868
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
1868
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
1869
1869
if let Some ( peer_state_mutex) = per_peer_state. get ( counterparty_node_id) {
1870
1870
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
1871
1871
let peer_state = & mut * peer_state_lock;
@@ -1986,7 +1986,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
1986
1986
let mut chan = {
1987
1987
let mut channel_state_lock = self . channel_state . lock ( ) . unwrap ( ) ;
1988
1988
let channel_state = & mut * channel_state_lock;
1989
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
1989
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
1990
1990
if let Some ( peer_state_mutex) = per_peer_state. get ( peer_node_id) {
1991
1991
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
1992
1992
let peer_state = & mut * peer_state_lock;
@@ -2281,7 +2281,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
2281
2281
Some ( ( cp_id, id) ) => Some ( ( cp_id. clone ( ) , id. clone ( ) ) ) ,
2282
2282
} ;
2283
2283
let ( chan_update_opt, forwardee_cltv_expiry_delta) = if let Some ( ( counterparty_node_id, forwarding_id) ) = forwarding_chan_info_opt {
2284
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
2284
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
2285
2285
let peer_state_mutex = per_peer_state. get ( & counterparty_node_id) . unwrap ( ) ;
2286
2286
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
2287
2287
let peer_state = & mut * peer_state_lock;
@@ -2482,7 +2482,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
2482
2482
}
2483
2483
2484
2484
let channel_state = & mut * channel_lock;
2485
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
2485
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
2486
2486
if let Some ( peer_state_mutex) = per_peer_state. get ( & counterparty_node_id) {
2487
2487
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
2488
2488
let peer_state = & mut * peer_state_lock;
@@ -2792,7 +2792,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
2792
2792
) -> Result < ( ) , APIError > {
2793
2793
let ( chan, msg) = {
2794
2794
let ( res, chan) = {
2795
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
2795
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
2796
2796
if let Some ( peer_state_mutex) = per_peer_state. get ( counterparty_node_id) {
2797
2797
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
2798
2798
let peer_state = & mut * peer_state_lock;
@@ -2828,7 +2828,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
2828
2828
node_id : chan. get_counterparty_node_id ( ) ,
2829
2829
msg,
2830
2830
} ) ;
2831
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
2831
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
2832
2832
let chan_id = chan. channel_id ( ) ;
2833
2833
if let Some ( peer_state_mutex) = per_peer_state. get ( counterparty_node_id) {
2834
2834
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
@@ -3017,7 +3017,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
3017
3017
{
3018
3018
let mut channel_state_lock = self . channel_state . lock ( ) . unwrap ( ) ;
3019
3019
let channel_state = & mut * channel_state_lock;
3020
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
3020
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
3021
3021
3022
3022
for ( short_chan_id, mut pending_forwards) in channel_state. forward_htlcs . drain ( ) {
3023
3023
if short_chan_id != 0 {
@@ -3729,7 +3729,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
3729
3729
HTLCSource :: PreviousHopData ( HTLCPreviousHopData { .. } ) => {
3730
3730
let channel_state = self . channel_state . lock ( ) . unwrap ( ) ;
3731
3731
let ( failure_code, onion_failure_data) = {
3732
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
3732
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
3733
3733
if let Some ( peer_state_mutex) = per_peer_state. get ( counterparty_node_id) {
3734
3734
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
3735
3735
let peer_state = & mut * peer_state_lock;
@@ -4085,7 +4085,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
4085
4085
}
4086
4086
} ;
4087
4087
4088
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
4088
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
4089
4089
if let Some ( peer_state_mutex) = per_peer_state. get ( & counterparty_node_id) {
4090
4090
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
4091
4091
let peer_state = & mut * peer_state_lock;
@@ -4292,7 +4292,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
4292
4292
if counterparty_node_id. is_none ( ) {
4293
4293
return
4294
4294
}
4295
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
4295
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
4296
4296
let mut peer_state_lock;
4297
4297
let mut channel = {
4298
4298
if let Some ( peer_state_mutex) = per_peer_state. get ( & counterparty_node_id. unwrap ( ) ) {
@@ -4382,7 +4382,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
4382
4382
4383
4383
let mut channel_state_lock = self . channel_state . lock ( ) . unwrap ( ) ;
4384
4384
let channel_state = & mut * channel_state_lock;
4385
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
4385
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
4386
4386
if let Some ( peer_state_mutex) = per_peer_state. get ( counterparty_node_id) {
4387
4387
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
4388
4388
let peer_state = & mut * peer_state_lock;
@@ -4445,7 +4445,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
4445
4445
} ;
4446
4446
let mut channel_state_lock = self . channel_state . lock ( ) . unwrap ( ) ;
4447
4447
let channel_state = & mut * channel_state_lock;
4448
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
4448
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
4449
4449
if let Some ( peer_state_mutex) = per_peer_state. get ( counterparty_node_id) {
4450
4450
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
4451
4451
let peer_state = & mut * peer_state_lock;
@@ -4489,7 +4489,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
4489
4489
let ( value, output_script, user_id) = {
4490
4490
let mut channel_lock = self . channel_state . lock ( ) . unwrap ( ) ;
4491
4491
let channel_state = & mut * channel_lock;
4492
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
4492
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
4493
4493
if let Some ( peer_state_mutex) = per_peer_state. get ( counterparty_node_id) {
4494
4494
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
4495
4495
let peer_state = & mut * peer_state_lock;
@@ -4523,7 +4523,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
4523
4523
let best_block = * self . best_block . read ( ) . unwrap ( ) ;
4524
4524
let mut channel_lock = self . channel_state . lock ( ) . unwrap ( ) ;
4525
4525
let channel_state = & mut * channel_lock;
4526
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
4526
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
4527
4527
if let Some ( peer_state_mutex) = per_peer_state. get ( counterparty_node_id) {
4528
4528
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
4529
4529
let peer_state = & mut * peer_state_lock;
@@ -4568,7 +4568,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
4568
4568
}
4569
4569
let mut channel_state_lock = self . channel_state . lock ( ) . unwrap ( ) ;
4570
4570
let channel_state = & mut * channel_state_lock;
4571
- let peer_state_lock = self . per_peer_state . write ( ) . unwrap ( ) ;
4571
+ let peer_state_lock = self . per_peer_state . read ( ) . unwrap ( ) ;
4572
4572
let channel_id = funding_msg. channel_id ;
4573
4573
if let Some ( peer_state_mutex) = peer_state_lock. get ( counterparty_node_id) {
4574
4574
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
@@ -4601,7 +4601,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
4601
4601
let best_block = * self . best_block . read ( ) . unwrap ( ) ;
4602
4602
let mut channel_lock = self . channel_state . lock ( ) . unwrap ( ) ;
4603
4603
let channel_state = & mut * channel_lock;
4604
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
4604
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
4605
4605
if let Some ( peer_state_mutex) = per_peer_state. get ( counterparty_node_id) {
4606
4606
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
4607
4607
let peer_state = & mut * peer_state_lock;
@@ -4645,7 +4645,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
4645
4645
fn internal_channel_ready ( & self , counterparty_node_id : & PublicKey , msg : & msgs:: ChannelReady ) -> Result < ( ) , MsgHandleErrInternal > {
4646
4646
let mut channel_state_lock = self . channel_state . lock ( ) . unwrap ( ) ;
4647
4647
let channel_state = & mut * channel_state_lock;
4648
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
4648
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
4649
4649
if let Some ( peer_state_mutex) = per_peer_state. get ( counterparty_node_id) {
4650
4650
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
4651
4651
let peer_state = & mut * peer_state_lock;
@@ -4691,7 +4691,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
4691
4691
let mut channel_state_lock = self . channel_state . lock ( ) . unwrap ( ) ;
4692
4692
let channel_state = & mut * channel_state_lock;
4693
4693
4694
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
4694
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
4695
4695
if let Some ( peer_state_mutex) = per_peer_state. get ( counterparty_node_id) {
4696
4696
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
4697
4697
let peer_state = & mut * peer_state_lock;
@@ -4749,7 +4749,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
4749
4749
let ( tx, chan_option) = {
4750
4750
let mut channel_state_lock = self . channel_state . lock ( ) . unwrap ( ) ;
4751
4751
let channel_state = & mut * channel_state_lock;
4752
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
4752
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
4753
4753
if let Some ( peer_state_mutex) = per_peer_state. get ( counterparty_node_id) {
4754
4754
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
4755
4755
let peer_state = & mut * peer_state_lock;
@@ -4809,7 +4809,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
4809
4809
let ( pending_forward_info, mut channel_state_lock) = self . decode_update_add_htlc_onion ( msg) ;
4810
4810
let channel_state = & mut * channel_state_lock;
4811
4811
4812
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
4812
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
4813
4813
if let Some ( peer_state_mutex) = per_peer_state. get ( counterparty_node_id) {
4814
4814
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
4815
4815
let peer_state = & mut * peer_state_lock;
@@ -4855,7 +4855,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
4855
4855
let mut channel_lock = self . channel_state . lock ( ) . unwrap ( ) ;
4856
4856
let ( htlc_source, forwarded_htlc_value) = {
4857
4857
let channel_state = & mut * channel_lock;
4858
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
4858
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
4859
4859
if let Some ( peer_state_mutex) = per_peer_state. get ( counterparty_node_id) {
4860
4860
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
4861
4861
let peer_state = & mut * peer_state_lock;
@@ -4879,7 +4879,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
4879
4879
fn internal_update_fail_htlc ( & self , counterparty_node_id : & PublicKey , msg : & msgs:: UpdateFailHTLC ) -> Result < ( ) , MsgHandleErrInternal > {
4880
4880
let mut channel_lock = self . channel_state . lock ( ) . unwrap ( ) ;
4881
4881
let channel_state = & mut * channel_lock;
4882
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
4882
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
4883
4883
if let Some ( peer_state_mutex) = per_peer_state. get ( counterparty_node_id) {
4884
4884
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
4885
4885
let peer_state = & mut * peer_state_lock;
@@ -4901,7 +4901,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
4901
4901
fn internal_update_fail_malformed_htlc ( & self , counterparty_node_id : & PublicKey , msg : & msgs:: UpdateFailMalformedHTLC ) -> Result < ( ) , MsgHandleErrInternal > {
4902
4902
let mut channel_lock = self . channel_state . lock ( ) . unwrap ( ) ;
4903
4903
let channel_state = & mut * channel_lock;
4904
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
4904
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
4905
4905
if let Some ( peer_state_mutex) = per_peer_state. get ( counterparty_node_id) {
4906
4906
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
4907
4907
let peer_state = & mut * peer_state_lock;
@@ -4927,7 +4927,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
4927
4927
fn internal_commitment_signed ( & self , counterparty_node_id : & PublicKey , msg : & msgs:: CommitmentSigned ) -> Result < ( ) , MsgHandleErrInternal > {
4928
4928
let mut channel_state_lock = self . channel_state . lock ( ) . unwrap ( ) ;
4929
4929
let channel_state = & mut * channel_state_lock;
4930
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
4930
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
4931
4931
if let Some ( peer_state_mutex) = per_peer_state. get ( counterparty_node_id) {
4932
4932
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
4933
4933
let peer_state = & mut * peer_state_lock;
@@ -5019,7 +5019,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
5019
5019
let res = loop {
5020
5020
let mut channel_state_lock = self . channel_state . lock ( ) . unwrap ( ) ;
5021
5021
let channel_state = & mut * channel_state_lock;
5022
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
5022
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
5023
5023
if let Some ( peer_state_mutex) = per_peer_state. get ( counterparty_node_id) {
5024
5024
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
5025
5025
let peer_state = & mut * peer_state_lock;
@@ -5086,7 +5086,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
5086
5086
fn internal_update_fee ( & self , counterparty_node_id : & PublicKey , msg : & msgs:: UpdateFee ) -> Result < ( ) , MsgHandleErrInternal > {
5087
5087
let mut channel_lock = self . channel_state . lock ( ) . unwrap ( ) ;
5088
5088
let channel_state = & mut * channel_lock;
5089
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
5089
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
5090
5090
if let Some ( peer_state_mutex) = per_peer_state. get ( counterparty_node_id) {
5091
5091
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
5092
5092
let peer_state = & mut * peer_state_lock;
@@ -5109,7 +5109,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
5109
5109
let mut channel_state_lock = self . channel_state . lock ( ) . unwrap ( ) ;
5110
5110
let channel_state = & mut * channel_state_lock;
5111
5111
5112
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
5112
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
5113
5113
if let Some ( peer_state_mutex) = per_peer_state. get ( counterparty_node_id) {
5114
5114
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
5115
5115
let peer_state = & mut * peer_state_lock;
@@ -5149,7 +5149,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
5149
5149
return Ok ( NotifyOption :: SkipPersist )
5150
5150
}
5151
5151
} ;
5152
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
5152
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
5153
5153
if let Some ( peer_state_mutex) = per_peer_state. get ( chan_counterparty_node_id) {
5154
5154
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
5155
5155
let peer_state = & mut * peer_state_lock;
@@ -5184,7 +5184,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
5184
5184
let mut channel_state_lock = self . channel_state . lock ( ) . unwrap ( ) ;
5185
5185
let channel_state = & mut * channel_state_lock;
5186
5186
5187
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
5187
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
5188
5188
if let Some ( peer_state_mutex) = per_peer_state. get ( counterparty_node_id) {
5189
5189
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
5190
5190
let peer_state = & mut * peer_state_lock;
@@ -5267,7 +5267,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
5267
5267
id_to_peer. get ( & funding_outpoint. to_channel_id ( ) ) . cloned ( )
5268
5268
} ;
5269
5269
if let Some ( counterparty_node_id) = counterparty_node_id_opt {
5270
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
5270
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
5271
5271
let pending_msg_events = & mut channel_state. pending_msg_events ;
5272
5272
if let Some ( peer_state_mutex) = per_peer_state. get ( & counterparty_node_id) {
5273
5273
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
@@ -6279,7 +6279,7 @@ impl<Signer: Sign, M: Deref , T: Deref , K: Deref , F: Deref , L: Deref >
6279
6279
{
6280
6280
// First check if we can advance the channel type and try again.
6281
6281
let mut channel_state = self . channel_state . lock ( ) . unwrap ( ) ;
6282
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
6282
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
6283
6283
if let Some ( peer_state_mutex) = per_peer_state. get ( counterparty_node_id) {
6284
6284
let mut peer_state_lock = peer_state_mutex. lock ( ) . unwrap ( ) ;
6285
6285
let peer_state = & mut * peer_state_lock;
@@ -6732,7 +6732,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> Writeable f
6732
6732
let channel_state = self . channel_state . lock ( ) . unwrap ( ) ;
6733
6733
let mut htlc_purposes: Vec < & events:: PaymentPurpose > = Vec :: new ( ) ;
6734
6734
{
6735
- let per_peer_state = self . per_peer_state . write ( ) . unwrap ( ) ;
6735
+ let per_peer_state = self . per_peer_state . read ( ) . unwrap ( ) ;
6736
6736
let mut unfunded_channels = 0 ;
6737
6737
let mut number_of_channels = 0 ;
6738
6738
for ( _, peer_state_mutex) in per_peer_state. iter ( ) {
@@ -7395,7 +7395,7 @@ impl<'a, Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref>
7395
7395
last_node_announcement_serial : AtomicUsize :: new ( last_node_announcement_serial as usize ) ,
7396
7396
highest_seen_timestamp : AtomicUsize :: new ( highest_seen_timestamp as usize ) ,
7397
7397
7398
- per_peer_state : RwLock :: new ( per_peer_state) ,
7398
+ per_peer_state : FairRwLock :: new ( per_peer_state) ,
7399
7399
7400
7400
pending_events : Mutex :: new ( pending_events_read) ,
7401
7401
pending_background_events : Mutex :: new ( pending_background_events_read) ,
0 commit comments