Skip to content

Commit 84be23a

Browse files
author
Antoine Riard
committed
-f address Matt/Val's comments
1 parent 4d8cb6a commit 84be23a

File tree

8 files changed

+152
-209
lines changed

8 files changed

+152
-209
lines changed

lightning/src/ln/chanmon_update_fail_tests.rs

Lines changed: 31 additions & 62 deletions
Large diffs are not rendered by default.

lightning/src/ln/channelmanager.rs

Lines changed: 17 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,7 @@ impl MsgHandleErrInternal {
258258
},
259259
},
260260
},
261-
chan_id: Some(channel_id),
261+
chan_id: None,
262262
shutdown_finish: None,
263263
}
264264
}
@@ -837,7 +837,7 @@ macro_rules! handle_error {
837837
});
838838
}
839839
if let Some(channel_id) = chan_id {
840-
$self.pending_events.lock().unwrap().push(events::Event::ChannelClosed { channel_id, err: ClosureReason::ProcessingError { err: err.err.clone() } });
840+
$self.pending_events.lock().unwrap().push(events::Event::ChannelClosed { channel_id, reason: ClosureReason::ProcessingError { err: err.err.clone() } });
841841
}
842842
}
843843

@@ -1447,6 +1447,8 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
14471447
}
14481448
}
14491449

1450+
/// `peer_node_id` should be set when we receive a message from a peer, but not set when the user closes, which will be re-exposed as the `ChannelClosed`
1451+
/// reason.
14501452
fn force_close_channel_with_peer(&self, channel_id: &[u8; 32], peer_node_id: Option<&PublicKey>, peer_msg: Option<&String>) -> Result<PublicKey, APIError> {
14511453
let mut chan = {
14521454
let mut channel_state_lock = self.channel_state.lock().unwrap();
@@ -1463,12 +1465,10 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
14631465
let mut pending_events_lock = self.pending_events.lock().unwrap();
14641466
if peer_node_id.is_some() {
14651467
if let Some(peer_msg) = peer_msg {
1466-
pending_events_lock.push(events::Event::ChannelClosed { channel_id: *channel_id, err: ClosureReason::CounterpartyForceClosed { peer_msg: Some(peer_msg.to_string()) } });
1467-
} else {
1468-
pending_events_lock.push(events::Event::ChannelClosed { channel_id: *channel_id, err: ClosureReason::CounterpartyForceClosed { peer_msg: None } });
1468+
pending_events_lock.push(events::Event::ChannelClosed { channel_id: *channel_id, reason: ClosureReason::CounterpartyForceClosed { peer_msg: peer_msg.to_string() } });
14691469
}
14701470
} else {
1471-
pending_events_lock.push(events::Event::ChannelClosed { channel_id: *channel_id, err: ClosureReason::HolderForceClosed });
1471+
pending_events_lock.push(events::Event::ChannelClosed { channel_id: *channel_id, reason: ClosureReason::HolderForceClosed });
14721472
}
14731473
chan.remove_entry().1
14741474
} else {
@@ -2435,7 +2435,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
24352435
if let Some(short_id) = channel.get_short_channel_id() {
24362436
channel_state.short_to_id.remove(&short_id);
24372437
}
2438-
// ChannelClosed event is generated by handle_errors for us.
2438+
// ChannelClosed event is generated by handle_error for us.
24392439
Err(MsgHandleErrInternal::from_finish_shutdown(msg, channel_id, channel.force_shutdown(true), self.get_channel_update_for_broadcast(&channel).ok()))
24402440
},
24412441
ChannelError::CloseDelayBroadcast(_) => { panic!("Wait is only generated on receipt of channel_reestablish, which is handled by try_chan_entry, we don't bother to support it here"); }
@@ -3565,8 +3565,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
35653565
msg: update
35663566
});
35673567
}
3568-
//TODO: split between CounterpartyInitiated/LocallyInitiated
3569-
self.pending_events.lock().unwrap().push(events::Event::ChannelClosed { channel_id: msg.channel_id, err: ClosureReason::CooperativeClosure });
3568+
self.pending_events.lock().unwrap().push(events::Event::ChannelClosed { channel_id: msg.channel_id, reason: ClosureReason::CooperativeClosure });
35703569
}
35713570
Ok(())
35723571
}
@@ -3978,7 +3977,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
39783977
msg: update
39793978
});
39803979
}
3981-
self.pending_events.lock().unwrap().push(events::Event::ChannelClosed { channel_id: chan.channel_id(), err: ClosureReason::CommitmentTxBroadcasted });
3980+
self.pending_events.lock().unwrap().push(events::Event::ChannelClosed { channel_id: chan.channel_id(), reason: ClosureReason::CommitmentTxBroadcasted });
39823981
pending_msg_events.push(events::MessageSendEvent::HandleError {
39833982
node_id: chan.get_counterparty_node_id(),
39843983
action: msgs::ErrorAction::SendErrorMessage {
@@ -4514,7 +4513,7 @@ where
45144513
msg: update
45154514
});
45164515
}
4517-
self.pending_events.lock().unwrap().push(events::Event::ChannelClosed { channel_id: channel.channel_id(), err: ClosureReason::CommitmentTxBroadcasted });
4516+
self.pending_events.lock().unwrap().push(events::Event::ChannelClosed { channel_id: channel.channel_id(), reason: ClosureReason::CommitmentTxBroadcasted });
45184517
pending_msg_events.push(events::MessageSendEvent::HandleError {
45194518
node_id: channel.get_counterparty_node_id(),
45204519
action: msgs::ErrorAction::SendErrorMessage { msg: e },
@@ -4705,7 +4704,7 @@ impl<Signer: Sign, M: Deref , T: Deref , K: Deref , F: Deref , L: Deref >
47054704
msg: update
47064705
});
47074706
}
4708-
self.pending_events.lock().unwrap().push(events::Event::ChannelClosed { channel_id: chan.channel_id(), err: ClosureReason::DisconnectedPeer });
4707+
self.pending_events.lock().unwrap().push(events::Event::ChannelClosed { channel_id: chan.channel_id(), reason: ClosureReason::DisconnectedPeer });
47094708
false
47104709
} else {
47114710
true
@@ -4720,7 +4719,7 @@ impl<Signer: Sign, M: Deref , T: Deref , K: Deref , F: Deref , L: Deref >
47204719
if let Some(short_id) = chan.get_short_channel_id() {
47214720
short_to_id.remove(&short_id);
47224721
}
4723-
self.pending_events.lock().unwrap().push(events::Event::ChannelClosed { channel_id: chan.channel_id(), err: ClosureReason::DisconnectedPeer });
4722+
self.pending_events.lock().unwrap().push(events::Event::ChannelClosed { channel_id: chan.channel_id(), reason: ClosureReason::DisconnectedPeer });
47244723
return false;
47254724
} else {
47264725
no_channels_remain = false;
@@ -5679,10 +5678,8 @@ mod tests {
56795678
nodes[1].node.handle_update_add_htlc(&nodes[0].node.get_our_node_id(), &payment_event.msgs[0]);
56805679
check_added_monitors!(nodes[1], 0);
56815680
commitment_signed_dance!(nodes[1], nodes[0], payment_event.commitment_msg, false);
5682-
let events = nodes[1].node.get_and_clear_pending_events();
5683-
expect_pending_htlcs_forwardable!(nodes[1], events);
5684-
let events = nodes[1].node.get_and_clear_pending_events();
5685-
expect_pending_htlcs_forwardable!(nodes[1], events);
5681+
expect_pending_htlcs_forwardable!(nodes[1]);
5682+
expect_pending_htlcs_forwardable!(nodes[1]);
56865683
check_added_monitors!(nodes[1], 1);
56875684
let updates = get_htlc_update_msgs!(nodes[1], nodes[0].node.get_our_node_id());
56885685
assert!(updates.update_add_htlcs.is_empty());
@@ -5747,7 +5744,7 @@ mod tests {
57475744

57485745
#[test]
57495746
fn test_keysend_dup_payment_hash() {
5750-
return true;
5747+
return;
57515748

57525749
// (1): Test that a keysend payment with a duplicate payment hash to an existing pending
57535750
// outbound regular payment fails as expected.
@@ -5816,10 +5813,8 @@ mod tests {
58165813
nodes[1].node.handle_update_add_htlc(&nodes[0].node.get_our_node_id(), &payment_event.msgs[0]);
58175814
check_added_monitors!(nodes[1], 0);
58185815
commitment_signed_dance!(nodes[1], nodes[0], payment_event.commitment_msg, false);
5819-
let events = nodes[1].node.get_and_clear_pending_events();
5820-
expect_pending_htlcs_forwardable!(nodes[1], events);
5821-
let events = nodes[1].node.get_and_clear_pending_events();
5822-
expect_pending_htlcs_forwardable!(nodes[1], events);
5816+
expect_pending_htlcs_forwardable!(nodes[1]);
5817+
expect_pending_htlcs_forwardable!(nodes[1]);
58235818
check_added_monitors!(nodes[1], 1);
58245819
let updates = get_htlc_update_msgs!(nodes[1], nodes[0].node.get_our_node_id());
58255820
assert!(updates.update_add_htlcs.is_empty());

lightning/src/ln/functional_test_utils.rs

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -770,7 +770,9 @@ macro_rules! check_closed_event {
770770
let events = $node.node.get_and_clear_pending_events();
771771
assert_eq!(events.len(), $events);
772772
match events[0] {
773-
Event::ChannelClosed { .. } => {}
773+
Event::ChannelClosed { ref reason, .. } => {
774+
//assert_eq!(reason, $reason);
775+
},
774776
_ => panic!("Unexpected event"),
775777
}
776778
}}
@@ -940,8 +942,7 @@ macro_rules! commitment_signed_dance {
940942
{
941943
commitment_signed_dance!($node_a, $node_b, $commitment_signed, $fail_backwards, true);
942944
if $fail_backwards {
943-
let events = $node_a.node.get_and_clear_pending_events();
944-
expect_pending_htlcs_forwardable!($node_a, events);
945+
expect_pending_htlcs_forwardable!($node_a);
945946
check_added_monitors!($node_a, 1);
946947

947948
let channel_state = $node_a.node.channel_state.lock().unwrap();
@@ -983,22 +984,37 @@ macro_rules! get_route_and_payment_hash {
983984
}
984985

985986
macro_rules! expect_pending_htlcs_forwardable_ignore {
986-
($node: expr, $events: expr) => {{
987-
assert_eq!($events.len(), 1);
988-
match $events[0] {
987+
($node: expr) => {{
988+
let events = $node.node.get_and_clear_pending_events();
989+
assert_eq!(events.len(), 1);
990+
match events[0] {
989991
Event::PendingHTLCsForwardable { .. } => { },
990992
_ => panic!("Unexpected event"),
991993
};
992994
}}
993995
}
994996

995997
macro_rules! expect_pending_htlcs_forwardable {
996-
($node: expr, $events: expr) => {{
997-
expect_pending_htlcs_forwardable_ignore!($node, $events);
998+
($node: expr) => {{
999+
expect_pending_htlcs_forwardable_ignore!($node);
9981000
$node.node.process_pending_htlc_forwards();
9991001
}}
10001002
}
10011003

1004+
#[cfg(test)]
1005+
macro_rules! expect_pending_htlcs_forwardable_from_events {
1006+
($node: expr, $events: expr, $ignore: expr) => {{
1007+
assert_eq!($events.len(), 1);
1008+
match $events[0] {
1009+
Event::PendingHTLCsForwardable { .. } => { },
1010+
_ => panic!("Unexpected event"),
1011+
};
1012+
if $ignore {
1013+
$node.node.process_pending_htlc_forwards();
1014+
}
1015+
}}
1016+
}
1017+
10021018
#[cfg(any(test, feature = "unstable"))]
10031019
macro_rules! expect_payment_received {
10041020
($node: expr, $expected_payment_hash: expr, $expected_payment_secret: expr, $expected_recv_value: expr) => {
@@ -1114,8 +1130,7 @@ pub fn pass_along_path<'a, 'b, 'c>(origin_node: &Node<'a, 'b, 'c>, expected_path
11141130
check_added_monitors!(node, 0);
11151131
commitment_signed_dance!(node, prev_node, payment_event.commitment_msg, false);
11161132

1117-
let events = node.node.get_and_clear_pending_events();
1118-
expect_pending_htlcs_forwardable!(node, events);
1133+
expect_pending_htlcs_forwardable!(node);
11191134

11201135
if idx == expected_path.len() - 1 {
11211136
let events_2 = node.node.get_and_clear_pending_events();

0 commit comments

Comments
 (0)