Skip to content

Commit 24fe768

Browse files
committed
Fix and test update_add_htlc but disconnect pre-commitment_signed
1 parent cd43181 commit 24fe768

File tree

2 files changed

+23
-19
lines changed

2 files changed

+23
-19
lines changed

src/ln/channel.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2097,6 +2097,7 @@ impl Channel {
20972097
},
20982098
}
20992099
});
2100+
self.next_remote_htlc_id -= inbound_drop_count;
21002101

21012102
for htlc in self.pending_outbound_htlcs.iter_mut() {
21022103
if let OutboundHTLCState::RemoteRemoved = htlc.state {

src/ln/channelmanager.rs

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -5527,46 +5527,48 @@ mod tests {
55275527
// Drop the payment_event messages, and let them get re-generated in reconnect_nodes!
55285528
} else {
55295529
nodes[1].node.handle_update_add_htlc(&nodes[0].node.get_our_node_id(), &payment_event.msgs[0]).unwrap();
5530-
nodes[1].node.handle_commitment_signed(&nodes[0].node.get_our_node_id(), &payment_event.commitment_msg).unwrap();
5531-
check_added_monitors!(nodes[1], 1);
5532-
let (bs_revoke_and_ack, bs_commitment_signed) = get_revoke_commit_msgs!(nodes[1], nodes[0].node.get_our_node_id());
5533-
55345530
if messages_delivered >= 3 {
5535-
nodes[0].node.handle_revoke_and_ack(&nodes[1].node.get_our_node_id(), &bs_revoke_and_ack).unwrap();
5536-
assert!(nodes[0].node.get_and_clear_pending_msg_events().is_empty());
5537-
check_added_monitors!(nodes[0], 1);
5531+
nodes[1].node.handle_commitment_signed(&nodes[0].node.get_our_node_id(), &payment_event.commitment_msg).unwrap();
5532+
check_added_monitors!(nodes[1], 1);
5533+
let (bs_revoke_and_ack, bs_commitment_signed) = get_revoke_commit_msgs!(nodes[1], nodes[0].node.get_our_node_id());
55385534

55395535
if messages_delivered >= 4 {
5540-
nodes[0].node.handle_commitment_signed(&nodes[1].node.get_our_node_id(), &bs_commitment_signed).unwrap();
5541-
let as_revoke_and_ack = get_event_msg!(nodes[0], MessageSendEvent::SendRevokeAndACK, nodes[1].node.get_our_node_id());
5542-
// No commitment_signed so get_event_msg's assert(len == 1) passes
5536+
nodes[0].node.handle_revoke_and_ack(&nodes[1].node.get_our_node_id(), &bs_revoke_and_ack).unwrap();
5537+
assert!(nodes[0].node.get_and_clear_pending_msg_events().is_empty());
55435538
check_added_monitors!(nodes[0], 1);
55445539

55455540
if messages_delivered >= 5 {
5546-
nodes[1].node.handle_revoke_and_ack(&nodes[0].node.get_our_node_id(), &as_revoke_and_ack).unwrap();
5547-
assert!(nodes[1].node.get_and_clear_pending_msg_events().is_empty());
5548-
check_added_monitors!(nodes[1], 1);
5541+
nodes[0].node.handle_commitment_signed(&nodes[1].node.get_our_node_id(), &bs_commitment_signed).unwrap();
5542+
let as_revoke_and_ack = get_event_msg!(nodes[0], MessageSendEvent::SendRevokeAndACK, nodes[1].node.get_our_node_id());
5543+
// No commitment_signed so get_event_msg's assert(len == 1) passes
5544+
check_added_monitors!(nodes[0], 1);
5545+
5546+
if messages_delivered >= 6 {
5547+
nodes[1].node.handle_revoke_and_ack(&nodes[0].node.get_our_node_id(), &as_revoke_and_ack).unwrap();
5548+
assert!(nodes[1].node.get_and_clear_pending_msg_events().is_empty());
5549+
check_added_monitors!(nodes[1], 1);
5550+
}
55495551
}
55505552
}
55515553
}
55525554
}
55535555

55545556
nodes[0].node.peer_disconnected(&nodes[1].node.get_our_node_id(), false);
55555557
nodes[1].node.peer_disconnected(&nodes[0].node.get_our_node_id(), false);
5556-
if messages_delivered < 2 {
5558+
if messages_delivered < 3 {
55575559
// Even if the funding_locked messages get exchanged, as long as nothing further was
55585560
// received on either side, both sides will need to resend them.
55595561
reconnect_nodes(&nodes[0], &nodes[1], true, (0, 1), (0, 0), (0, 0), (0, 0), (false, false));
5560-
} else if messages_delivered == 2 {
5562+
} else if messages_delivered == 3 {
55615563
// nodes[0] still wants its RAA + commitment_signed
55625564
reconnect_nodes(&nodes[0], &nodes[1], false, (-1, 0), (0, 0), (0, 0), (0, 0), (true, false));
5563-
} else if messages_delivered == 3 {
5565+
} else if messages_delivered == 4 {
55645566
// nodes[0] still wants its commitment_signed
55655567
reconnect_nodes(&nodes[0], &nodes[1], false, (-1, 0), (0, 0), (0, 0), (0, 0), (false, false));
5566-
} else if messages_delivered == 4 {
5568+
} else if messages_delivered == 5 {
55675569
// nodes[1] still wants its final RAA
55685570
reconnect_nodes(&nodes[0], &nodes[1], false, (0, 0), (0, 0), (0, 0), (0, 0), (false, true));
5569-
} else if messages_delivered == 5 {
5571+
} else if messages_delivered == 6 {
55705572
// Everything was delivered...
55715573
reconnect_nodes(&nodes[0], &nodes[1], false, (0, 0), (0, 0), (0, 0), (0, 0), (false, false));
55725574
}
@@ -5694,13 +5696,14 @@ mod tests {
56945696
do_test_drop_messages_peer_disconnect(0);
56955697
do_test_drop_messages_peer_disconnect(1);
56965698
do_test_drop_messages_peer_disconnect(2);
5699+
do_test_drop_messages_peer_disconnect(3);
56975700
}
56985701

56995702
#[test]
57005703
fn test_drop_messages_peer_disconnect_b() {
5701-
do_test_drop_messages_peer_disconnect(3);
57025704
do_test_drop_messages_peer_disconnect(4);
57035705
do_test_drop_messages_peer_disconnect(5);
5706+
do_test_drop_messages_peer_disconnect(6);
57045707
}
57055708

57065709
#[test]

0 commit comments

Comments
 (0)