@@ -253,6 +253,7 @@ fn mpp_retry_overpay() {
253253
254254 route. paths . remove ( 0 ) ;
255255 route_params. final_value_msat -= first_path_value;
256+ route. route_params . as_mut ( ) . map ( |p| p. final_value_msat -= first_path_value) ;
256257 route_params. payment_params . previously_failed_channels . push ( chan_4_update. contents . short_channel_id ) ;
257258
258259 // Check the remaining max total routing fee for the second attempt accounts only for 1_000 msat
@@ -2395,10 +2396,11 @@ fn auto_retry_partial_failure() {
23952396 let payment_params = PaymentParameters :: from_node_id ( nodes[ 1 ] . node . get_our_node_id ( ) , TEST_FINAL_CLTV )
23962397 . with_expiry_time ( payment_expiry_secs as u64 )
23972398 . with_bolt11_features ( invoice_features) . unwrap ( ) ;
2399+
2400+ // Configure the initial send path
23982401 let mut route_params = RouteParameters :: from_payment_params_and_value ( payment_params, amt_msat) ;
23992402 route_params. max_total_routing_fee_msat = None ;
24002403
2401- // Configure the initial send, retry1 and retry2's paths.
24022404 let send_route = Route {
24032405 paths : vec ! [
24042406 Path { hops: vec![ RouteHop {
@@ -2422,6 +2424,14 @@ fn auto_retry_partial_failure() {
24222424 ] ,
24232425 route_params : Some ( route_params. clone ( ) ) ,
24242426 } ;
2427+ nodes[ 0 ] . router . expect_find_route ( route_params. clone ( ) , Ok ( send_route) ) ;
2428+
2429+ // Configure the retry1 paths
2430+ let mut payment_params = route_params. payment_params . clone ( ) ;
2431+ payment_params. previously_failed_channels . push ( chan_2_id) ;
2432+ let mut retry_1_params = RouteParameters :: from_payment_params_and_value ( payment_params, amt_msat / 2 ) ;
2433+ retry_1_params. max_total_routing_fee_msat = None ;
2434+
24252435 let retry_1_route = Route {
24262436 paths : vec ! [
24272437 Path { hops: vec![ RouteHop {
@@ -2443,8 +2453,16 @@ fn auto_retry_partial_failure() {
24432453 maybe_announced_channel: true ,
24442454 } ] , blinded_tail: None } ,
24452455 ] ,
2446- route_params : Some ( route_params . clone ( ) ) ,
2456+ route_params : Some ( retry_1_params . clone ( ) ) ,
24472457 } ;
2458+ nodes[ 0 ] . router . expect_find_route ( retry_1_params. clone ( ) , Ok ( retry_1_route) ) ;
2459+
2460+ // Configure the retry2 path
2461+ let mut payment_params = retry_1_params. payment_params . clone ( ) ;
2462+ payment_params. previously_failed_channels . push ( chan_3_id) ;
2463+ let mut retry_2_params = RouteParameters :: from_payment_params_and_value ( payment_params, amt_msat / 4 ) ;
2464+ retry_2_params. max_total_routing_fee_msat = None ;
2465+
24482466 let retry_2_route = Route {
24492467 paths : vec ! [
24502468 Path { hops: vec![ RouteHop {
@@ -2457,20 +2475,8 @@ fn auto_retry_partial_failure() {
24572475 maybe_announced_channel: true ,
24582476 } ] , blinded_tail: None } ,
24592477 ] ,
2460- route_params : Some ( route_params . clone ( ) ) ,
2478+ route_params : Some ( retry_2_params . clone ( ) ) ,
24612479 } ;
2462- nodes[ 0 ] . router . expect_find_route ( route_params. clone ( ) , Ok ( send_route) ) ;
2463- let mut payment_params = route_params. payment_params . clone ( ) ;
2464- payment_params. previously_failed_channels . push ( chan_2_id) ;
2465-
2466- let mut retry_1_params = RouteParameters :: from_payment_params_and_value ( payment_params, amt_msat / 2 ) ;
2467- retry_1_params. max_total_routing_fee_msat = None ;
2468- nodes[ 0 ] . router . expect_find_route ( retry_1_params, Ok ( retry_1_route) ) ;
2469-
2470- let mut payment_params = route_params. payment_params . clone ( ) ;
2471- payment_params. previously_failed_channels . push ( chan_3_id) ;
2472- let mut retry_2_params = RouteParameters :: from_payment_params_and_value ( payment_params, amt_msat / 4 ) ;
2473- retry_2_params. max_total_routing_fee_msat = None ;
24742480 nodes[ 0 ] . router . expect_find_route ( retry_2_params, Ok ( retry_2_route) ) ;
24752481
24762482 // Send a payment that will partially fail on send, then partially fail on retry, then succeed.
@@ -2734,6 +2740,7 @@ fn retry_multi_path_single_failed_payment() {
27342740 // not the amount remaining on the full payment, which should be changed.
27352741 let mut retry_params = RouteParameters :: from_payment_params_and_value ( pay_params, 100_000_001 ) ;
27362742 retry_params. max_total_routing_fee_msat = None ;
2743+ route. route_params . as_mut ( ) . unwrap ( ) . final_value_msat = 100_000_000 ;
27372744 nodes[ 0 ] . router . expect_find_route ( retry_params, Ok ( route. clone ( ) ) ) ;
27382745
27392746 {
@@ -2917,9 +2924,7 @@ fn no_extra_retries_on_back_to_back_fail() {
29172924 maybe_announced_channel: true ,
29182925 } ] , blinded_tail: None }
29192926 ] ,
2920- route_params : Some ( RouteParameters :: from_payment_params_and_value (
2921- PaymentParameters :: from_node_id ( nodes[ 2 ] . node . get_our_node_id ( ) , TEST_FINAL_CLTV ) ,
2922- 100_000_000 ) ) ,
2927+ route_params : Some ( route_params. clone ( ) ) ,
29232928 } ;
29242929 route. route_params . as_mut ( ) . unwrap ( ) . max_total_routing_fee_msat = None ;
29252930 nodes[ 0 ] . router . expect_find_route ( route_params. clone ( ) , Ok ( route. clone ( ) ) ) ;
@@ -3123,18 +3128,18 @@ fn test_simple_partial_retry() {
31233128 maybe_announced_channel: true ,
31243129 } ] , blinded_tail: None }
31253130 ] ,
3126- route_params : Some ( RouteParameters :: from_payment_params_and_value (
3127- PaymentParameters :: from_node_id ( nodes[ 2 ] . node . get_our_node_id ( ) , TEST_FINAL_CLTV ) ,
3128- 100_000_000 ) ) ,
3131+ route_params : Some ( route_params. clone ( ) ) ,
31293132 } ;
3130- route . route_params . as_mut ( ) . unwrap ( ) . max_total_routing_fee_msat = None ;
3133+
31313134 nodes[ 0 ] . router . expect_find_route ( route_params. clone ( ) , Ok ( route. clone ( ) ) ) ;
3135+
31323136 let mut second_payment_params = route_params. payment_params . clone ( ) ;
31333137 second_payment_params. previously_failed_channels = vec ! [ chan_2_scid] ;
31343138 // On retry, we'll only be asked for one path (or 100k sats)
31353139 route. paths . remove ( 0 ) ;
31363140 let mut retry_params = RouteParameters :: from_payment_params_and_value ( second_payment_params, amt_msat / 2 ) ;
31373141 retry_params. max_total_routing_fee_msat = None ;
3142+ route. route_params . as_mut ( ) . unwrap ( ) . final_value_msat = amt_msat / 2 ;
31383143 nodes[ 0 ] . router . expect_find_route ( retry_params, Ok ( route. clone ( ) ) ) ;
31393144
31403145 nodes[ 0 ] . node . send_payment ( payment_hash, RecipientOnionFields :: secret_only ( payment_secret) ,
@@ -3294,11 +3299,7 @@ fn test_threaded_payment_retries() {
32943299 maybe_announced_channel: true ,
32953300 } ] , blinded_tail: None }
32963301 ] ,
3297- route_params : Some ( RouteParameters {
3298- payment_params : PaymentParameters :: from_node_id ( nodes[ 1 ] . node . get_our_node_id ( ) , TEST_FINAL_CLTV ) ,
3299- final_value_msat : amt_msat - amt_msat / 1000 ,
3300- max_total_routing_fee_msat : Some ( 500_000 ) ,
3301- } ) ,
3302+ route_params : Some ( route_params. clone ( ) ) ,
33023303 } ;
33033304 nodes[ 0 ] . router . expect_find_route ( route_params. clone ( ) , Ok ( route. clone ( ) ) ) ;
33043305
@@ -3317,6 +3318,7 @@ fn test_threaded_payment_retries() {
33173318
33183319 // from here on out, the retry `RouteParameters` amount will be amt/1000
33193320 route_params. final_value_msat /= 1000 ;
3321+ route. route_params . as_mut ( ) . unwrap ( ) . final_value_msat /= 1000 ;
33203322 route. paths . pop ( ) ;
33213323
33223324 let end_time = Instant :: now ( ) + Duration :: from_secs ( 1 ) ;
0 commit comments