Skip to content

Commit e91589f

Browse files
committed
Introduce RAA Blocker check in Node::drop()
1 parent cf25c67 commit e91589f

File tree

2 files changed

+34
-3
lines changed

2 files changed

+34
-3
lines changed

lightning/src/ln/chanmon_update_fail_tests.rs

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ use crate::chain::channelmonitor::{ANTI_REORG_DELAY, ChannelMonitor};
1919
use crate::chain::transaction::OutPoint;
2020
use crate::chain::{ChannelMonitorUpdateStatus, Listen, Watch};
2121
use crate::events::{Event, MessageSendEvent, MessageSendEventsProvider, PaymentPurpose, ClosureReason, HTLCDestination};
22-
use crate::ln::channelmanager::{RAACommitmentOrder, PaymentSendFailure, PaymentId, RecipientOnionFields};
22+
use crate::ln::channelmanager::{PaymentId, PaymentSendFailure, RAACommitmentOrder, RAAMonitorUpdateBlockingAction, RecipientOnionFields};
2323
use crate::ln::channel::{AnnouncementSigsState, ChannelPhase};
2424
use crate::ln::msgs;
2525
use crate::ln::types::ChannelId;
@@ -3333,6 +3333,19 @@ fn do_test_durable_preimages_on_closed_channel(close_chans_before_reload: bool,
33333333
check_added_monitors(&nodes[1], 1);
33343334
assert!(nodes[1].node.get_and_clear_pending_events().is_empty());
33353335
send_payment(&nodes[1], &[&nodes[2]], 100_000);
3336+
} else {
3337+
// Handle RAA blockers on nodes[1]
3338+
let raa_blockers = nodes[1].node.get_and_clear_pending_raa_blockers();
3339+
assert_eq!(raa_blockers.len(), 1);
3340+
let (chan_id, blockers) = &raa_blockers[0];
3341+
assert_eq!(*chan_id, chan_id_bc);
3342+
assert_eq!(blockers.len(), 1);
3343+
match blockers[0] {
3344+
RAAMonitorUpdateBlockingAction::ForwardedPaymentInboundClaim { channel_id, .. } => {
3345+
assert_eq!(channel_id, chan_id_ab);
3346+
}
3347+
_ => panic!("Unexpected RAA blocker")
3348+
}
33363349
}
33373350
}
33383351

@@ -3548,8 +3561,8 @@ fn do_test_glacial_peer_cant_hang(hold_chan_a: bool) {
35483561
let node_chanmgrs = create_node_chanmgrs(3, &node_cfgs, &[None, None, None]);
35493562
let mut nodes = create_network(3, &node_cfgs, &node_chanmgrs);
35503563

3551-
create_announced_chan_between_nodes(&nodes, 0, 1);
3552-
create_announced_chan_between_nodes(&nodes, 1, 2);
3564+
let chan_id_ab = create_announced_chan_between_nodes(&nodes, 0, 1).2;
3565+
let chan_id_bc = create_announced_chan_between_nodes(&nodes, 1, 2).2;
35533566

35543567
// Route a payment from A, through B, to C, then claim it on C. Replay the
35553568
// `update_fulfill_htlc` twice on B to check that B doesn't hang.
@@ -3596,6 +3609,19 @@ fn do_test_glacial_peer_cant_hang(hold_chan_a: bool) {
35963609

35973610
assert!(nodes[1].node.get_and_clear_pending_events().is_empty());
35983611
assert!(nodes[1].node.get_and_clear_pending_msg_events().is_empty());
3612+
3613+
// Handle RAA blockers on nodes[1]
3614+
let raa_blockers = nodes[1].node.get_and_clear_pending_raa_blockers();
3615+
assert_eq!(raa_blockers.len(), 1);
3616+
let (chan_id, blockers) = &raa_blockers[0];
3617+
assert_eq!(*chan_id, chan_id_bc);
3618+
assert_eq!(blockers.len(), 1);
3619+
match blockers[0] {
3620+
RAAMonitorUpdateBlockingAction::ForwardedPaymentInboundClaim { channel_id, .. } => {
3621+
assert_eq!(channel_id, chan_id_ab);
3622+
}
3623+
_ => panic!("Unexpected RAA blocker")
3624+
}
35993625
}
36003626
}
36013627

lightning/src/ln/functional_test_utils.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -652,6 +652,11 @@ impl<'a, 'b, 'c> Drop for Node<'a, 'b, 'c> {
652652
panic!("Had {} excess added monitors on node {}", added_monitors.len(), self.logger.id);
653653
}
654654

655+
let raa_blockers = self.node.get_and_clear_pending_raa_blockers();
656+
if !raa_blockers.is_empty() {
657+
panic!( "Had excess RAA blockers on node {}: {:?}", self.logger.id, raa_blockers);
658+
}
659+
655660
// Check that if we serialize the network graph, we can deserialize it again.
656661
let network_graph = {
657662
let mut w = test_utils::TestVecWriter(Vec::new());

0 commit comments

Comments
 (0)