@@ -8629,6 +8629,41 @@ mod tests {
8629
8629
get_event_msg ! ( nodes[ 1 ] , MessageSendEvent :: SendAcceptChannel , last_random_pk) ;
8630
8630
}
8631
8631
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
+
8632
8667
#[ test]
8633
8668
fn test_0conf_limiting ( ) {
8634
8669
// Tests that we properly limit inbound channels when we have the manual-channel-acceptance
0 commit comments