@@ -114,19 +114,9 @@ fn mpp_retry() {
114114
115115	// Add the HTLC along the first hop. 
116116	let  fail_path_msgs_1 = remove_first_msg_event_to_node ( & nodes[ 2 ] . node . get_our_node_id ( ) ,  & mut  events) ; 
117- 	let  ( update_add,  commitment_signed)  = match  fail_path_msgs_1 { 
118- 		MessageSendEvent :: UpdateHTLCs  {  node_id :  _,  updates :  msgs:: CommitmentUpdate  {  ref  update_add_htlcs,  ref  update_fulfill_htlcs,  ref  update_fail_htlcs,  ref  update_fail_malformed_htlcs,  ref  update_fee,  ref  commitment_signed }  }  => { 
119- 			assert_eq ! ( update_add_htlcs. len( ) ,  1 ) ; 
120- 			assert ! ( update_fail_htlcs. is_empty( ) ) ; 
121- 			assert ! ( update_fulfill_htlcs. is_empty( ) ) ; 
122- 			assert ! ( update_fail_malformed_htlcs. is_empty( ) ) ; 
123- 			assert ! ( update_fee. is_none( ) ) ; 
124- 			( update_add_htlcs[ 0 ] . clone ( ) ,  commitment_signed. clone ( ) ) 
125- 		} , 
126- 		_ => panic ! ( "Unexpected event" ) , 
127- 	} ; 
128- 	nodes[ 2 ] . node . handle_update_add_htlc ( & nodes[ 0 ] . node . get_our_node_id ( ) ,  & update_add) ; 
129- 	commitment_signed_dance ! ( nodes[ 2 ] ,  nodes[ 0 ] ,  commitment_signed,  false ) ; 
117+ 	let  send_event = SendEvent :: from_event ( fail_path_msgs_1) ; 
118+ 	nodes[ 2 ] . node . handle_update_add_htlc ( & nodes[ 0 ] . node . get_our_node_id ( ) ,  & send_event. msgs [ 0 ] ) ; 
119+ 	commitment_signed_dance ! ( nodes[ 2 ] ,  nodes[ 0 ] ,  & send_event. commitment_msg,  false ) ; 
130120
131121	// Attempt to forward the payment and complete the 2nd path's failure. 
132122	expect_pending_htlcs_forwardable ! ( & nodes[ 2 ] ) ; 
@@ -225,25 +215,9 @@ fn mpp_retry_overpay() {
225215
226216	// Add the HTLC along the first hop. 
227217	let  fail_path_msgs_1 = remove_first_msg_event_to_node ( & nodes[ 2 ] . node . get_our_node_id ( ) ,  & mut  events) ; 
228- 	let  ( update_add,  commitment_signed)  = match  fail_path_msgs_1 { 
229- 		MessageSendEvent :: UpdateHTLCs  { 
230- 			node_id :  _, 
231- 			updates :  msgs:: CommitmentUpdate  { 
232- 					ref  update_add_htlcs,  ref  update_fulfill_htlcs,  ref  update_fail_htlcs, 
233- 					ref  update_fail_malformed_htlcs,  ref  update_fee,  ref  commitment_signed
234- 			} 
235- 		}  => { 
236- 			assert_eq ! ( update_add_htlcs. len( ) ,  1 ) ; 
237- 			assert ! ( update_fail_htlcs. is_empty( ) ) ; 
238- 			assert ! ( update_fulfill_htlcs. is_empty( ) ) ; 
239- 			assert ! ( update_fail_malformed_htlcs. is_empty( ) ) ; 
240- 			assert ! ( update_fee. is_none( ) ) ; 
241- 			( update_add_htlcs[ 0 ] . clone ( ) ,  commitment_signed. clone ( ) ) 
242- 		} , 
243- 		_ => panic ! ( "Unexpected event" ) , 
244- 	} ; 
245- 	nodes[ 2 ] . node . handle_update_add_htlc ( & nodes[ 0 ] . node . get_our_node_id ( ) ,  & update_add) ; 
246- 	commitment_signed_dance ! ( nodes[ 2 ] ,  nodes[ 0 ] ,  commitment_signed,  false ) ; 
218+ 	let  send_event = SendEvent :: from_event ( fail_path_msgs_1) ; 
219+ 	nodes[ 2 ] . node . handle_update_add_htlc ( & nodes[ 0 ] . node . get_our_node_id ( ) ,  & send_event. msgs [ 0 ] ) ; 
220+ 	commitment_signed_dance ! ( nodes[ 2 ] ,  nodes[ 0 ] ,  & send_event. commitment_msg,  false ) ; 
247221
248222	// Attempt to forward the payment and complete the 2nd path's failure. 
249223	expect_pending_htlcs_forwardable ! ( & nodes[ 2 ] ) ; 
@@ -279,6 +253,7 @@ fn mpp_retry_overpay() {
279253
280254	route. paths . remove ( 0 ) ; 
281255	route_params. final_value_msat  -= first_path_value; 
256+ 	route. route_params . as_mut ( ) . map ( |p| p. final_value_msat  -= first_path_value) ; 
282257	route_params. payment_params . previously_failed_channels . push ( chan_4_update. contents . short_channel_id ) ; 
283258
284259	// Check the remaining max total routing fee for the second attempt accounts only for 1_000 msat 
@@ -2421,10 +2396,11 @@ fn auto_retry_partial_failure() {
24212396	let  payment_params = PaymentParameters :: from_node_id ( nodes[ 1 ] . node . get_our_node_id ( ) ,  TEST_FINAL_CLTV ) 
24222397		. with_expiry_time ( payment_expiry_secs as  u64 ) 
24232398		. with_bolt11_features ( invoice_features) . unwrap ( ) ; 
2399+ 
2400+ 	// Configure the initial send path 
24242401	let  mut  route_params = RouteParameters :: from_payment_params_and_value ( payment_params,  amt_msat) ; 
24252402	route_params. max_total_routing_fee_msat  = None ; 
24262403
2427- 	// Configure the initial send, retry1 and retry2's paths. 
24282404	let  send_route = Route  { 
24292405		paths :  vec ! [ 
24302406			Path  {  hops:  vec![ RouteHop  { 
@@ -2448,6 +2424,14 @@ fn auto_retry_partial_failure() {
24482424		] , 
24492425		route_params :  Some ( route_params. clone ( ) ) , 
24502426	} ; 
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+ 
24512435	let  retry_1_route = Route  { 
24522436		paths :  vec ! [ 
24532437			Path  {  hops:  vec![ RouteHop  { 
@@ -2469,8 +2453,16 @@ fn auto_retry_partial_failure() {
24692453				maybe_announced_channel:  true , 
24702454			} ] ,  blinded_tail:  None  } , 
24712455		] , 
2472- 		route_params :  Some ( route_params . clone ( ) ) , 
2456+ 		route_params :  Some ( retry_1_params . clone ( ) ) , 
24732457	} ; 
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+ 
24742466	let  retry_2_route = Route  { 
24752467		paths :  vec ! [ 
24762468			Path  {  hops:  vec![ RouteHop  { 
@@ -2483,20 +2475,8 @@ fn auto_retry_partial_failure() {
24832475				maybe_announced_channel:  true , 
24842476			} ] ,  blinded_tail:  None  } , 
24852477		] , 
2486- 		route_params :  Some ( route_params . clone ( ) ) , 
2478+ 		route_params :  Some ( retry_2_params . clone ( ) ) , 
24872479	} ; 
2488- 	nodes[ 0 ] . router . expect_find_route ( route_params. clone ( ) ,  Ok ( send_route) ) ; 
2489- 	let  mut  payment_params = route_params. payment_params . clone ( ) ; 
2490- 	payment_params. previously_failed_channels . push ( chan_2_id) ; 
2491- 
2492- 	let  mut  retry_1_params = RouteParameters :: from_payment_params_and_value ( payment_params,  amt_msat / 2 ) ; 
2493- 	retry_1_params. max_total_routing_fee_msat  = None ; 
2494- 	nodes[ 0 ] . router . expect_find_route ( retry_1_params,  Ok ( retry_1_route) ) ; 
2495- 
2496- 	let  mut  payment_params = route_params. payment_params . clone ( ) ; 
2497- 	payment_params. previously_failed_channels . push ( chan_3_id) ; 
2498- 	let  mut  retry_2_params = RouteParameters :: from_payment_params_and_value ( payment_params,  amt_msat / 4 ) ; 
2499- 	retry_2_params. max_total_routing_fee_msat  = None ; 
25002480	nodes[ 0 ] . router . expect_find_route ( retry_2_params,  Ok ( retry_2_route) ) ; 
25012481
25022482	// Send a payment that will partially fail on send, then partially fail on retry, then succeed. 
@@ -2756,10 +2736,9 @@ fn retry_multi_path_single_failed_payment() {
27562736	let  mut  pay_params = route. route_params . clone ( ) . unwrap ( ) . payment_params ; 
27572737	pay_params. previously_failed_channels . push ( chans[ 1 ] . short_channel_id . unwrap ( ) ) ; 
27582738
2759- 	// Note that the second request here requests the amount we originally failed to send, 
2760- 	// not the amount remaining on the full payment, which should be changed. 
2761- 	let  mut  retry_params = RouteParameters :: from_payment_params_and_value ( pay_params,  100_000_001 ) ; 
2739+ 	let  mut  retry_params = RouteParameters :: from_payment_params_and_value ( pay_params,  100_000_000 ) ; 
27622740	retry_params. max_total_routing_fee_msat  = None ; 
2741+ 	route. route_params . as_mut ( ) . unwrap ( ) . final_value_msat  = 100_000_000 ; 
27632742	nodes[ 0 ] . router . expect_find_route ( retry_params,  Ok ( route. clone ( ) ) ) ; 
27642743
27652744	{ 
@@ -2943,9 +2922,7 @@ fn no_extra_retries_on_back_to_back_fail() {
29432922				maybe_announced_channel:  true , 
29442923			} ] ,  blinded_tail:  None  } 
29452924		] , 
2946- 		route_params :  Some ( RouteParameters :: from_payment_params_and_value ( 
2947- 			PaymentParameters :: from_node_id ( nodes[ 2 ] . node . get_our_node_id ( ) ,  TEST_FINAL_CLTV ) , 
2948- 			100_000_000 ) ) , 
2925+ 		route_params :  Some ( route_params. clone ( ) ) , 
29492926	} ; 
29502927	route. route_params . as_mut ( ) . unwrap ( ) . max_total_routing_fee_msat  = None ; 
29512928	nodes[ 0 ] . router . expect_find_route ( route_params. clone ( ) ,  Ok ( route. clone ( ) ) ) ; 
@@ -3149,18 +3126,18 @@ fn test_simple_partial_retry() {
31493126				maybe_announced_channel:  true , 
31503127			} ] ,  blinded_tail:  None  } 
31513128		] , 
3152- 		route_params :  Some ( RouteParameters :: from_payment_params_and_value ( 
3153- 			PaymentParameters :: from_node_id ( nodes[ 2 ] . node . get_our_node_id ( ) ,  TEST_FINAL_CLTV ) , 
3154- 			100_000_000 ) ) , 
3129+ 		route_params :  Some ( route_params. clone ( ) ) , 
31553130	} ; 
3156- 	route . route_params . as_mut ( ) . unwrap ( ) . max_total_routing_fee_msat  =  None ; 
3131+ 
31573132	nodes[ 0 ] . router . expect_find_route ( route_params. clone ( ) ,  Ok ( route. clone ( ) ) ) ; 
3133+ 
31583134	let  mut  second_payment_params = route_params. payment_params . clone ( ) ; 
31593135	second_payment_params. previously_failed_channels  = vec ! [ chan_2_scid] ; 
31603136	// On retry, we'll only be asked for one path (or 100k sats) 
31613137	route. paths . remove ( 0 ) ; 
31623138	let  mut  retry_params = RouteParameters :: from_payment_params_and_value ( second_payment_params,  amt_msat / 2 ) ; 
31633139	retry_params. max_total_routing_fee_msat  = None ; 
3140+ 	route. route_params . as_mut ( ) . unwrap ( ) . final_value_msat  = amt_msat / 2 ; 
31643141	nodes[ 0 ] . router . expect_find_route ( retry_params,  Ok ( route. clone ( ) ) ) ; 
31653142
31663143	nodes[ 0 ] . node . send_payment ( payment_hash,  RecipientOnionFields :: secret_only ( payment_secret) , 
@@ -3320,11 +3297,7 @@ fn test_threaded_payment_retries() {
33203297				maybe_announced_channel:  true , 
33213298			} ] ,  blinded_tail:  None  } 
33223299		] , 
3323- 		route_params :  Some ( RouteParameters  { 
3324- 			payment_params :  PaymentParameters :: from_node_id ( nodes[ 1 ] . node . get_our_node_id ( ) ,  TEST_FINAL_CLTV ) , 
3325- 			final_value_msat :  amt_msat - amt_msat / 1000 , 
3326- 			max_total_routing_fee_msat :  Some ( 500_000 ) , 
3327- 		} ) , 
3300+ 		route_params :  Some ( route_params. clone ( ) ) , 
33283301	} ; 
33293302	nodes[ 0 ] . router . expect_find_route ( route_params. clone ( ) ,  Ok ( route. clone ( ) ) ) ; 
33303303
@@ -3343,6 +3316,7 @@ fn test_threaded_payment_retries() {
33433316
33443317	// from here on out, the retry `RouteParameters` amount will be amt/1000 
33453318	route_params. final_value_msat  /= 1000 ; 
3319+ 	route. route_params . as_mut ( ) . unwrap ( ) . final_value_msat  /= 1000 ; 
33463320	route. paths . pop ( ) ; 
33473321
33483322	let  end_time = Instant :: now ( )  + Duration :: from_secs ( 1 ) ; 
0 commit comments