Skip to content

Commit 30403ef

Browse files
committed
Fix and test update_add_htlc but disconnect pre-commitment_signed
1 parent df38048 commit 30403ef

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
@@ -2044,6 +2044,7 @@ impl Channel {
20442044
},
20452045
}
20462046
});
2047+
self.next_remote_htlc_id -= inbound_drop_count;
20472048

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

src/ln/channelmanager.rs

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -5500,46 +5500,48 @@ mod tests {
55005500
// Drop the payment_event messages, and let them get re-generated in reconnect_nodes!
55015501
} else {
55025502
nodes[1].node.handle_update_add_htlc(&nodes[0].node.get_our_node_id(), &payment_event.msgs[0]).unwrap();
5503-
nodes[1].node.handle_commitment_signed(&nodes[0].node.get_our_node_id(), &payment_event.commitment_msg).unwrap();
5504-
check_added_monitors!(nodes[1], 1);
5505-
let (bs_revoke_and_ack, bs_commitment_signed) = get_revoke_commit_msgs!(nodes[1], nodes[0].node.get_our_node_id());
5506-
55075503
if messages_delivered >= 3 {
5508-
nodes[0].node.handle_revoke_and_ack(&nodes[1].node.get_our_node_id(), &bs_revoke_and_ack).unwrap();
5509-
assert!(nodes[0].node.get_and_clear_pending_msg_events().is_empty());
5510-
check_added_monitors!(nodes[0], 1);
5504+
nodes[1].node.handle_commitment_signed(&nodes[0].node.get_our_node_id(), &payment_event.commitment_msg).unwrap();
5505+
check_added_monitors!(nodes[1], 1);
5506+
let (bs_revoke_and_ack, bs_commitment_signed) = get_revoke_commit_msgs!(nodes[1], nodes[0].node.get_our_node_id());
55115507

55125508
if messages_delivered >= 4 {
5513-
nodes[0].node.handle_commitment_signed(&nodes[1].node.get_our_node_id(), &bs_commitment_signed).unwrap();
5514-
let as_revoke_and_ack = get_event_msg!(nodes[0], MessageSendEvent::SendRevokeAndACK, nodes[1].node.get_our_node_id());
5515-
// No commitment_signed so get_event_msg's assert(len == 1) passes
5509+
nodes[0].node.handle_revoke_and_ack(&nodes[1].node.get_our_node_id(), &bs_revoke_and_ack).unwrap();
5510+
assert!(nodes[0].node.get_and_clear_pending_msg_events().is_empty());
55165511
check_added_monitors!(nodes[0], 1);
55175512

55185513
if messages_delivered >= 5 {
5519-
nodes[1].node.handle_revoke_and_ack(&nodes[0].node.get_our_node_id(), &as_revoke_and_ack).unwrap();
5520-
assert!(nodes[1].node.get_and_clear_pending_msg_events().is_empty());
5521-
check_added_monitors!(nodes[1], 1);
5514+
nodes[0].node.handle_commitment_signed(&nodes[1].node.get_our_node_id(), &bs_commitment_signed).unwrap();
5515+
let as_revoke_and_ack = get_event_msg!(nodes[0], MessageSendEvent::SendRevokeAndACK, nodes[1].node.get_our_node_id());
5516+
// No commitment_signed so get_event_msg's assert(len == 1) passes
5517+
check_added_monitors!(nodes[0], 1);
5518+
5519+
if messages_delivered >= 6 {
5520+
nodes[1].node.handle_revoke_and_ack(&nodes[0].node.get_our_node_id(), &as_revoke_and_ack).unwrap();
5521+
assert!(nodes[1].node.get_and_clear_pending_msg_events().is_empty());
5522+
check_added_monitors!(nodes[1], 1);
5523+
}
55225524
}
55235525
}
55245526
}
55255527
}
55265528

55275529
nodes[0].node.peer_disconnected(&nodes[1].node.get_our_node_id(), false);
55285530
nodes[1].node.peer_disconnected(&nodes[0].node.get_our_node_id(), false);
5529-
if messages_delivered < 2 {
5531+
if messages_delivered < 3 {
55305532
// Even if the funding_locked messages get exchanged, as long as nothing further was
55315533
// received on either side, both sides will need to resend them.
55325534
reconnect_nodes(&nodes[0], &nodes[1], true, (0, 1), (0, 0), (0, 0), (0, 0), (false, false));
5533-
} else if messages_delivered == 2 {
5535+
} else if messages_delivered == 3 {
55345536
// nodes[0] still wants its RAA + commitment_signed
55355537
reconnect_nodes(&nodes[0], &nodes[1], false, (-1, 0), (0, 0), (0, 0), (0, 0), (true, false));
5536-
} else if messages_delivered == 3 {
5538+
} else if messages_delivered == 4 {
55375539
// nodes[0] still wants its commitment_signed
55385540
reconnect_nodes(&nodes[0], &nodes[1], false, (-1, 0), (0, 0), (0, 0), (0, 0), (false, false));
5539-
} else if messages_delivered == 4 {
5541+
} else if messages_delivered == 5 {
55405542
// nodes[1] still wants its final RAA
55415543
reconnect_nodes(&nodes[0], &nodes[1], false, (0, 0), (0, 0), (0, 0), (0, 0), (false, true));
5542-
} else if messages_delivered == 5 {
5544+
} else if messages_delivered == 6 {
55435545
// Everything was delivered...
55445546
reconnect_nodes(&nodes[0], &nodes[1], false, (0, 0), (0, 0), (0, 0), (0, 0), (false, false));
55455547
}
@@ -5667,13 +5669,14 @@ mod tests {
56675669
do_test_drop_messages_peer_disconnect(0);
56685670
do_test_drop_messages_peer_disconnect(1);
56695671
do_test_drop_messages_peer_disconnect(2);
5672+
do_test_drop_messages_peer_disconnect(3);
56705673
}
56715674

56725675
#[test]
56735676
fn test_drop_messages_peer_disconnect_b() {
5674-
do_test_drop_messages_peer_disconnect(3);
56755677
do_test_drop_messages_peer_disconnect(4);
56765678
do_test_drop_messages_peer_disconnect(5);
5679+
do_test_drop_messages_peer_disconnect(6);
56775680
}
56785681

56795682
#[test]

0 commit comments

Comments
 (0)