Skip to content

Commit ab6735b

Browse files
f - Store per peer: aquire locks inside get_channel_ref
1 parent e019ba4 commit ab6735b

File tree

4 files changed

+24
-22
lines changed

4 files changed

+24
-22
lines changed

lightning/src/ln/chanmon_update_fail_tests.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1413,12 +1413,12 @@ fn monitor_failed_no_reestablish_response() {
14131413
let mut nodes = create_network(2, &node_cfgs, &node_chanmgrs);
14141414
let channel_id = create_announced_chan_between_nodes(&nodes, 0, 1, InitFeatures::known(), InitFeatures::known()).2;
14151415
{
1416-
let node_0_per_peer_lock = nodes[0].node.per_peer_state.write().unwrap();
1417-
let mut node_0_peer_state_lock = node_0_per_peer_lock.get(&nodes[1].node.get_our_node_id()).unwrap().lock().unwrap();
1418-
let node_1_per_peer_lock = nodes[1].node.per_peer_state.write().unwrap();
1419-
let mut node_1_peer_state_lock = node_1_per_peer_lock.get(&nodes[0].node.get_our_node_id()).unwrap().lock().unwrap();
1420-
get_channel_ref!(nodes[0], node_0_peer_state_lock, channel_id).announcement_sigs_state = AnnouncementSigsState::PeerReceived;
1421-
get_channel_ref!(nodes[1], node_1_peer_state_lock, channel_id).announcement_sigs_state = AnnouncementSigsState::PeerReceived;
1416+
let mut node_0_per_peer_lock;
1417+
let mut node_0_peer_state_lock;
1418+
let mut node_1_per_peer_lock;
1419+
let mut node_1_peer_state_lock;
1420+
get_channel_ref!(nodes[0], nodes[1], node_0_per_peer_lock, node_0_peer_state_lock, channel_id).announcement_sigs_state = AnnouncementSigsState::PeerReceived;
1421+
get_channel_ref!(nodes[1], nodes[0], node_1_per_peer_lock, node_1_peer_state_lock, channel_id).announcement_sigs_state = AnnouncementSigsState::PeerReceived;
14221422
}
14231423

14241424
// Route the payment and deliver the initial commitment_signed (with a monitor update failure

lightning/src/ln/functional_test_utils.rs

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -510,8 +510,10 @@ macro_rules! get_htlc_update_msgs {
510510

511511
#[cfg(test)]
512512
macro_rules! get_channel_ref {
513-
($node: expr, $peer_state_lock: ident, $channel_id: expr) => {
513+
($node: expr, $counterparty_node: expr, $per_peer_state_lock: ident, $peer_state_lock: ident, $channel_id: expr) => {
514514
{
515+
$per_peer_state_lock = $node.node.per_peer_state.write().unwrap();
516+
$peer_state_lock = $per_peer_state_lock.get(&$counterparty_node.node.get_our_node_id()).unwrap().lock().unwrap();
515517
$peer_state_lock.channel_by_id.get_mut(&$channel_id).unwrap()
516518
}
517519
}
@@ -521,9 +523,9 @@ macro_rules! get_channel_ref {
521523
macro_rules! get_feerate {
522524
($node: expr, $counterparty_node: expr, $channel_id: expr) => {
523525
{
524-
let per_peer_lock = $node.node.per_peer_state.write().unwrap();
525-
let mut peer_state_lock = per_peer_lock.get(&$counterparty_node.node.get_our_node_id()).unwrap().lock().unwrap();
526-
let chan = get_channel_ref!($node, peer_state_lock, $channel_id);
526+
let mut per_peer_state_lock;
527+
let mut peer_state_lock;
528+
let chan = get_channel_ref!($node, $counterparty_node, per_peer_state_lock, peer_state_lock, $channel_id);
527529
chan.get_feerate()
528530
}
529531
}
@@ -533,9 +535,9 @@ macro_rules! get_feerate {
533535
macro_rules! get_opt_anchors {
534536
($node: expr, $counterparty_node: expr, $channel_id: expr) => {
535537
{
536-
let per_peer_lock = $node.node.per_peer_state.write().unwrap();
537-
let mut peer_state_lock = per_peer_lock.get(&$counterparty_node.node.get_our_node_id()).unwrap().lock().unwrap();
538-
let chan = get_channel_ref!($node, peer_state_lock, $channel_id);
538+
let mut per_peer_state_lock;
539+
let mut peer_state_lock;
540+
let chan = get_channel_ref!($node, $counterparty_node, per_peer_state_lock, peer_state_lock, $channel_id);
539541
chan.opt_anchors()
540542
}
541543
}

lightning/src/ln/functional_tests.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -173,9 +173,9 @@ fn do_test_counterparty_no_reserve(send_from_initiator: bool) {
173173
{
174174
let sender_node = if send_from_initiator { &nodes[1] } else { &nodes[0] };
175175
let counterparty_node = if send_from_initiator { &nodes[0] } else { &nodes[1] };
176-
let per_peer_lock = sender_node.node.per_peer_state.write().unwrap();
177-
let mut peer_state_lock = per_peer_lock.get(&counterparty_node.node.get_our_node_id()).unwrap().lock().unwrap();
178-
let mut chan = get_channel_ref!(sender_node, peer_state_lock, temp_channel_id);
176+
let mut sender_node_per_peer_lock;
177+
let mut sender_node_peer_state_lock;
178+
let mut chan = get_channel_ref!(sender_node, counterparty_node, sender_node_per_peer_lock, sender_node_peer_state_lock, temp_channel_id);
179179
chan.holder_selected_channel_reserve_satoshis = 0;
180180
chan.holder_max_htlc_value_in_flight_msat = 100_000_000;
181181
}
@@ -8473,9 +8473,9 @@ fn test_reject_funding_before_inbound_channel_accepted() {
84738473
// `handle_accept_channel`, which is required in order for `create_funding_transaction` to
84748474
// succeed when `nodes[0]` is passed to it.
84758475
{
8476-
let per_peer_lock = nodes[1].node.per_peer_state.write().unwrap();
8477-
let mut peer_state_lock = per_peer_lock.get(&nodes[0].node.get_our_node_id()).unwrap().lock().unwrap();
8478-
let channel = get_channel_ref!(&nodes[1], peer_state_lock, temp_channel_id);
8476+
let mut node_1_per_peer_lock;
8477+
let mut node_1_peer_state_lock;
8478+
let channel = get_channel_ref!(&nodes[1], nodes[0], node_1_per_peer_lock, node_1_peer_state_lock, temp_channel_id);
84798479
let accept_chan_msg = channel.get_accept_channel_message();
84808480
nodes[0].node.handle_accept_channel(&nodes[1].node.get_our_node_id(), InitFeatures::known(), &accept_chan_msg);
84818481
}

lightning/src/ln/shutdown_tests.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -762,9 +762,9 @@ fn do_test_closing_signed_reinit_timeout(timeout_step: TimeoutStep) {
762762
// nodes[1] should happily accept and respond to.
763763
node_0_closing_signed.fee_range.as_mut().unwrap().max_fee_satoshis *= 10;
764764
{
765-
let per_peer_lock = nodes[0].node.per_peer_state.write().unwrap();
766-
let mut peer_state_lock = per_peer_lock.get(&nodes[1].node.get_our_node_id()).unwrap().lock().unwrap();
767-
get_channel_ref!(nodes[0], peer_state_lock, chan_id).closing_fee_limits.as_mut().unwrap().1 *= 10;
765+
let mut node_0_per_peer_lock;
766+
let mut node_0_peer_state_lock;
767+
get_channel_ref!(nodes[0], nodes[1], node_0_per_peer_lock, node_0_peer_state_lock, chan_id).closing_fee_limits.as_mut().unwrap().1 *= 10;
768768
}
769769
nodes[1].node.handle_closing_signed(&nodes[0].node.get_our_node_id(), &node_0_closing_signed);
770770
let node_1_closing_signed = get_event_msg!(nodes[1], MessageSendEvent::SendClosingSigned, nodes[0].node.get_our_node_id());

0 commit comments

Comments
 (0)