Skip to content

Commit b161d40

Browse files
committed
f add new test of outbound channels
1 parent 34fc351 commit b161d40

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

lightning/src/ln/channelmanager.rs

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8629,6 +8629,41 @@ mod tests {
86298629
get_event_msg!(nodes[1], MessageSendEvent::SendAcceptChannel, last_random_pk);
86308630
}
86318631

8632+
#[test]
8633+
fn test_outbound_chans_unlimited() {
8634+
// Test that we never refuse an outbound channel even if a peer is unfuned-channel-limited
8635+
let chanmon_cfgs = create_chanmon_cfgs(2);
8636+
let node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
8637+
let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs, &[None, None]);
8638+
let nodes = create_network(2, &node_cfgs, &node_chanmgrs);
8639+
8640+
// Note that create_network connects the nodes together for us
8641+
8642+
nodes[0].node.create_channel(nodes[1].node.get_our_node_id(), 100_000, 0, 42, None).unwrap();
8643+
let mut open_channel_msg = get_event_msg!(nodes[0], MessageSendEvent::SendOpenChannel, nodes[1].node.get_our_node_id());
8644+
8645+
for _ in 0..super::MAX_UNFUNDED_CHANS_PER_PEER {
8646+
nodes[1].node.handle_open_channel(&nodes[0].node.get_our_node_id(), &open_channel_msg);
8647+
get_event_msg!(nodes[1], MessageSendEvent::SendAcceptChannel, nodes[0].node.get_our_node_id());
8648+
open_channel_msg.temporary_channel_id = nodes[0].keys_manager.get_secure_random_bytes();
8649+
}
8650+
8651+
// Once we have MAX_UNFUNDED_CHANS_PER_PEER unfunded channels, new inbound channels will be
8652+
// rejected.
8653+
nodes[1].node.handle_open_channel(&nodes[0].node.get_our_node_id(), &open_channel_msg);
8654+
assert_eq!(get_err_msg!(nodes[1], nodes[0].node.get_our_node_id()).channel_id,
8655+
open_channel_msg.temporary_channel_id);
8656+
8657+
// but we can still open an outbound channel.
8658+
nodes[1].node.create_channel(nodes[0].node.get_our_node_id(), 100_000, 0, 42, None).unwrap();
8659+
get_event_msg!(nodes[1], MessageSendEvent::SendOpenChannel, nodes[0].node.get_our_node_id());
8660+
8661+
// but even with such an outbound channel, additional inbound channels will still fail.
8662+
nodes[1].node.handle_open_channel(&nodes[0].node.get_our_node_id(), &open_channel_msg);
8663+
assert_eq!(get_err_msg!(nodes[1], nodes[0].node.get_our_node_id()).channel_id,
8664+
open_channel_msg.temporary_channel_id);
8665+
}
8666+
86328667
#[test]
86338668
fn test_0conf_limiting() {
86348669
// Tests that we properly limit inbound channels when we have the manual-channel-acceptance

0 commit comments

Comments
 (0)