@@ -1221,64 +1221,82 @@ fn test_send_notifications_and_peer_connected_resets_cooldown() {
12211221 }
12221222}
12231223
1224- #[ test]
1225- fn dos_protection ( ) {
1226- let chanmon_cfgs = create_chanmon_cfgs ( 2 ) ;
1227- let node_cfgs = create_node_cfgs ( 2 , & chanmon_cfgs) ;
1228- let node_chanmgrs = create_node_chanmgrs ( 2 , & node_cfgs, & [ None , None ] ) ;
1229- let nodes = create_network ( 2 , & node_cfgs, & node_chanmgrs) ;
1230- let ( lsps_nodes, _) = lsps5_test_setup ( nodes, Arc :: new ( DefaultTimeProvider ) ) ;
1231- let LSPSNodes { service_node, client_node } = lsps_nodes;
1232- let client_node_id = client_node. inner . node . get_our_node_id ( ) ;
1233- let service_node_id = service_node. inner . node . get_our_node_id ( ) ;
1234-
1235- let client_handler = client_node. liquidity_manager . lsps5_client_handler ( ) . unwrap ( ) ;
1236-
1237- let assert_reject = || -> ( ) {
1238- let _ = client_handler
1224+ macro_rules! assert_lsps5_reject {
1225+ ( $client_handler: expr, $service_node: expr, $client_node: expr, $service_node_id: expr, $client_node_id: expr) => { {
1226+ let _ = $client_handler
12391227 . set_webhook(
1240- service_node_id,
1228+ $ service_node_id,
12411229 "App" . to_string( ) ,
12421230 "https://example.org/webhook" . to_string( ) ,
12431231 )
12441232 . expect( "Request should send" ) ;
1245- let request = get_lsps_message ! ( client_node, service_node_id) ;
1233+ let request = get_lsps_message!( $ client_node, $ service_node_id) ;
12461234
1247- let result = service_node. liquidity_manager . handle_custom_message ( request, client_node_id) ;
1235+ let result =
1236+ $service_node. liquidity_manager. handle_custom_message( request, $client_node_id) ;
12481237 assert!( result. is_err( ) , "Service should reject request without prior interaction" ) ;
12491238
1250- assert ! ( service_node. liquidity_manager. get_and_clear_pending_msg( ) . is_empty( ) ) ;
1251- } ;
1239+ assert!( $service_node. liquidity_manager. get_and_clear_pending_msg( ) . is_empty( ) ) ;
1240+ } } ;
1241+ }
12521242
1253- let assert_accept = || -> ( ) {
1254- let _ = client_handler
1243+ macro_rules! assert_lsps5_accept {
1244+ ( $client_handler: expr, $service_node: expr, $client_node: expr, $service_node_id: expr, $client_node_id: expr) => { {
1245+ let _ = $client_handler
12551246 . set_webhook(
1256- service_node_id,
1247+ $ service_node_id,
12571248 "App" . to_string( ) ,
12581249 "https://example.org/webhook" . to_string( ) ,
12591250 )
12601251 . expect( "Request should send" ) ;
1261- let request = get_lsps_message ! ( client_node, service_node_id) ;
1252+ let request = get_lsps_message!( $ client_node, $ service_node_id) ;
12621253
1263- let result = service_node. liquidity_manager . handle_custom_message ( request, client_node_id) ;
1254+ let result =
1255+ $service_node. liquidity_manager. handle_custom_message( request, $client_node_id) ;
12641256 assert!( result. is_ok( ) , "Service should accept request after prior interaction" ) ;
1265- let _ = service_node. liquidity_manager . next_event ( ) . unwrap ( ) ;
1266- let response = get_lsps_message ! ( service_node, client_node_id) ;
1267- client_node
1257+ let _ = $ service_node. liquidity_manager. next_event( ) . unwrap( ) ;
1258+ let response = get_lsps_message!( $ service_node, $ client_node_id) ;
1259+ $ client_node
12681260 . liquidity_manager
1269- . handle_custom_message ( response, service_node_id)
1261+ . handle_custom_message( response, $ service_node_id)
12701262 . expect( "Client should handle response" ) ;
1271- let _ = client_node. liquidity_manager . next_event ( ) . unwrap ( ) ;
1272- } ;
1263+ let _ = $client_node. liquidity_manager. next_event( ) . unwrap( ) ;
1264+ } } ;
1265+ }
1266+
1267+ #[ test]
1268+ fn dos_protection ( ) {
1269+ let chanmon_cfgs = create_chanmon_cfgs ( 2 ) ;
1270+ let node_cfgs = create_node_cfgs ( 2 , & chanmon_cfgs) ;
1271+ let node_chanmgrs = create_node_chanmgrs ( 2 , & node_cfgs, & [ None , None ] ) ;
1272+ let nodes = create_network ( 2 , & node_cfgs, & node_chanmgrs) ;
1273+ let ( lsps_nodes, _) = lsps5_test_setup ( nodes, Arc :: new ( DefaultTimeProvider ) ) ;
1274+ let LSPSNodes { service_node, client_node } = lsps_nodes;
1275+ let client_node_id = client_node. inner . node . get_our_node_id ( ) ;
1276+ let service_node_id = service_node. inner . node . get_our_node_id ( ) ;
1277+
1278+ let client_handler = client_node. liquidity_manager . lsps5_client_handler ( ) . unwrap ( ) ;
12731279
12741280 // no channel is open so far -> should reject
1275- assert_reject ( ) ;
1281+ assert_lsps5_reject ! (
1282+ client_handler,
1283+ service_node,
1284+ client_node,
1285+ service_node_id,
1286+ client_node_id
1287+ ) ;
12761288
12771289 let ( _, _, _, channel_id, funding_tx) =
12781290 create_chan_between_nodes ( & service_node. inner , & client_node. inner ) ;
12791291
12801292 // now that a channel is open, should accept
1281- assert_accept ( ) ;
1293+ assert_lsps5_accept ! (
1294+ client_handler,
1295+ service_node,
1296+ client_node,
1297+ service_node_id,
1298+ client_node_id
1299+ ) ;
12821300
12831301 close_channel ( & service_node. inner , & client_node. inner , & channel_id, funding_tx, true ) ;
12841302 let node_a_reason = ClosureReason :: CounterpartyInitiatedCooperativeClosure ;
@@ -1287,7 +1305,13 @@ fn dos_protection() {
12871305 check_closed_event ! ( client_node. inner, 1 , node_b_reason, [ service_node_id] , 100000 ) ;
12881306
12891307 // channel is now closed again -> should reject
1290- assert_reject ( ) ;
1308+ assert_lsps5_reject ! (
1309+ client_handler,
1310+ service_node,
1311+ client_node,
1312+ service_node_id,
1313+ client_node_id
1314+ ) ;
12911315}
12921316
12931317#[ test]
@@ -1298,20 +1322,28 @@ fn lsps2_state_allows_lsps5_request() {
12981322 let nodes = create_network ( 2 , & node_cfgs, & node_chanmgrs) ;
12991323
13001324 let ( lsps_nodes, _) = lsps5_lsps2_test_setup ( nodes, Arc :: new ( DefaultTimeProvider ) ) ;
1301- establish_lsps2_prior_interaction ( & lsps_nodes) ;
13021325
1303- let LSPSNodes { service_node , client_node } = lsps_nodes;
1304- let service_node_id = service_node. inner . node . get_our_node_id ( ) ;
1305- let client_node_id = client_node. inner . node . get_our_node_id ( ) ;
1326+ let client_node_id = lsps_nodes. client_node . inner . node . get_our_node_id ( ) ;
1327+ let service_node_id = lsps_nodes . service_node . inner . node . get_our_node_id ( ) ;
1328+ let client_handler = lsps_nodes . client_node . liquidity_manager . lsps5_client_handler ( ) . unwrap ( ) ;
13061329
1307- let lsps5_client = client_node. liquidity_manager . lsps5_client_handler ( ) . unwrap ( ) ;
1330+ assert_lsps5_reject ! (
1331+ client_handler,
1332+ lsps_nodes. service_node,
1333+ lsps_nodes. client_node,
1334+ service_node_id,
1335+ client_node_id
1336+ ) ;
13081337
1309- let _ = lsps5_client
1310- . set_webhook ( service_node_id, "App" . to_string ( ) , "https://example.org/webhook" . to_string ( ) )
1311- . expect ( "Request should send" ) ;
1312- let request = get_lsps_message ! ( client_node, service_node_id) ;
1313- let result = service_node. liquidity_manager . handle_custom_message ( request, client_node_id) ;
1314- assert ! ( result. is_ok( ) , "Service should accept request based on LSPS2 state" ) ;
1338+ establish_lsps2_prior_interaction ( & lsps_nodes) ;
1339+
1340+ assert_lsps5_accept ! (
1341+ client_handler,
1342+ lsps_nodes. service_node,
1343+ lsps_nodes. client_node,
1344+ service_node_id,
1345+ client_node_id
1346+ ) ;
13151347}
13161348
13171349fn establish_lsps2_prior_interaction ( lsps_nodes : & LSPSNodes ) {
0 commit comments