@@ -2276,57 +2276,33 @@ pub fn pass_probe_along_route<'a, 'b, 'c>(origin_node: &Node<'a, 'b, 'c>, expect
2276
2276
for path in expected_route. iter ( ) {
2277
2277
let ev = remove_first_msg_event_to_node ( & path[ 0 ] . node . get_our_node_id ( ) , & mut events) ;
2278
2278
2279
- pass_probe_along_path ( origin_node, path, ev ) ;
2279
+ do_pass_along_path ( origin_node, path, 0 , PaymentHash ( [ 0_u8 ; 32 ] ) , None , ev , false , false , None , true ) ;
2280
2280
let nodes_to_fail_payment: Vec < _ > = vec ! [ origin_node] . into_iter ( ) . chain ( path. iter ( ) . cloned ( ) ) . collect ( ) ;
2281
2281
2282
2282
fail_payment_along_path ( nodes_to_fail_payment. as_slice ( ) ) ;
2283
2283
}
2284
2284
}
2285
2285
2286
-
2287
- fn pass_probe_along_path < ' a , ' b , ' c > ( origin_node : & Node < ' a , ' b , ' c > , expected_path : & [ & Node < ' a , ' b , ' c > ] , ev : MessageSendEvent ) {
2286
+ pub fn do_pass_along_path < ' a , ' b , ' c > ( origin_node : & Node < ' a , ' b , ' c > , expected_path : & [ & Node < ' a , ' b , ' c > ] , recv_value : u64 , our_payment_hash : PaymentHash , our_payment_secret : Option < PaymentSecret > , ev : MessageSendEvent , payment_claimable_expected : bool , clear_recipient_events : bool , expected_preimage : Option < PaymentPreimage > , is_probe : bool ) -> Option < Event > {
2288
2287
let mut payment_event = SendEvent :: from_event ( ev) ;
2289
2288
let mut prev_node = origin_node;
2289
+ let mut event = None ;
2290
2290
2291
2291
for ( idx, & node) in expected_path. iter ( ) . enumerate ( ) {
2292
+ let is_last_hop = idx == expected_path. len ( ) - 1 ;
2292
2293
assert_eq ! ( node. node. get_our_node_id( ) , payment_event. node_id) ;
2293
2294
2294
2295
node. node . handle_update_add_htlc ( & prev_node. node . get_our_node_id ( ) , & payment_event. msgs [ 0 ] ) ;
2295
2296
check_added_monitors ! ( node, 0 ) ;
2296
2297
2297
- if idx != expected_path. len ( ) - 1 {
2298
+ if is_last_hop && is_probe {
2299
+ commitment_signed_dance ! ( node, prev_node, payment_event. commitment_msg, true , true ) ;
2300
+ } else {
2298
2301
commitment_signed_dance ! ( node, prev_node, payment_event. commitment_msg, false ) ;
2299
2302
expect_pending_htlcs_forwardable ! ( node) ;
2300
-
2301
- let mut events = node. node . get_and_clear_pending_msg_events ( ) ;
2302
- assert_eq ! ( events. len( ) , 1 ) ;
2303
- payment_event = SendEvent :: from_event ( events. remove ( 0 ) ) ;
2304
- assert_eq ! ( payment_event. msgs. len( ) , 1 ) ;
2305
- check_added_monitors ! ( node, 1 ) ;
2306
- } else {
2307
- commitment_signed_dance ! ( node, prev_node, payment_event. commitment_msg, true , true ) ;
2308
2303
}
2309
2304
2310
-
2311
- prev_node = node;
2312
- }
2313
- }
2314
-
2315
- pub fn do_pass_along_path < ' a , ' b , ' c > ( origin_node : & Node < ' a , ' b , ' c > , expected_path : & [ & Node < ' a , ' b , ' c > ] , recv_value : u64 , our_payment_hash : PaymentHash , our_payment_secret : Option < PaymentSecret > , ev : MessageSendEvent , payment_claimable_expected : bool , clear_recipient_events : bool , expected_preimage : Option < PaymentPreimage > ) -> Option < Event > {
2316
- let mut payment_event = SendEvent :: from_event ( ev) ;
2317
- let mut prev_node = origin_node;
2318
- let mut event = None ;
2319
-
2320
- for ( idx, & node) in expected_path. iter ( ) . enumerate ( ) {
2321
- assert_eq ! ( node. node. get_our_node_id( ) , payment_event. node_id) ;
2322
-
2323
- node. node . handle_update_add_htlc ( & prev_node. node . get_our_node_id ( ) , & payment_event. msgs [ 0 ] ) ;
2324
- check_added_monitors ! ( node, 0 ) ;
2325
- commitment_signed_dance ! ( node, prev_node, payment_event. commitment_msg, false ) ;
2326
-
2327
- expect_pending_htlcs_forwardable ! ( node) ;
2328
-
2329
- if idx == expected_path. len ( ) - 1 && clear_recipient_events {
2305
+ if is_last_hop && clear_recipient_events {
2330
2306
let events_2 = node. node . get_and_clear_pending_events ( ) ;
2331
2307
if payment_claimable_expected {
2332
2308
assert_eq ! ( events_2. len( ) , 1 ) ;
@@ -2360,7 +2336,7 @@ pub fn do_pass_along_path<'a, 'b, 'c>(origin_node: &Node<'a, 'b, 'c>, expected_p
2360
2336
} else {
2361
2337
assert ! ( events_2. is_empty( ) ) ;
2362
2338
}
2363
- } else if idx != expected_path . len ( ) - 1 {
2339
+ } else if !is_last_hop {
2364
2340
let mut events_2 = node. node . get_and_clear_pending_msg_events ( ) ;
2365
2341
assert_eq ! ( events_2. len( ) , 1 ) ;
2366
2342
check_added_monitors ! ( node, 1 ) ;
@@ -2374,7 +2350,7 @@ pub fn do_pass_along_path<'a, 'b, 'c>(origin_node: &Node<'a, 'b, 'c>, expected_p
2374
2350
}
2375
2351
2376
2352
pub fn pass_along_path < ' a , ' b , ' c > ( origin_node : & Node < ' a , ' b , ' c > , expected_path : & [ & Node < ' a , ' b , ' c > ] , recv_value : u64 , our_payment_hash : PaymentHash , our_payment_secret : Option < PaymentSecret > , ev : MessageSendEvent , payment_claimable_expected : bool , expected_preimage : Option < PaymentPreimage > ) -> Option < Event > {
2377
- do_pass_along_path ( origin_node, expected_path, recv_value, our_payment_hash, our_payment_secret, ev, payment_claimable_expected, true , expected_preimage)
2353
+ do_pass_along_path ( origin_node, expected_path, recv_value, our_payment_hash, our_payment_secret, ev, payment_claimable_expected, true , expected_preimage, false )
2378
2354
}
2379
2355
2380
2356
pub fn pass_along_route < ' a , ' b , ' c > ( origin_node : & Node < ' a , ' b , ' c > , expected_route : & [ & [ & Node < ' a , ' b , ' c > ] ] , recv_value : u64 , our_payment_hash : PaymentHash , our_payment_secret : PaymentSecret ) {
0 commit comments