- // We want to move towards only using the `PaymentParameters` in the outbound payments
- // map. However, for backwards-compatibility, we still need to support passing the
- // `PaymentParameters` data that was shoved in the HTLC (and given to us via
- // `payment_params`) back to the user.
- let path_last_hop = path.last().expect("Outbound payments must have had a valid path");
- if let Some(params) = payment.get_mut().payment_parameters() {
- if params.final_cltv_expiry_delta.is_none() {
- // This should be rare, but a user could provide None for the payment data, and
- // we need it when we go to retry the payment, so fill it in.
- params.final_cltv_expiry_delta = Some(path_last_hop.cltv_expiry_delta);
- }
- retry = Some(RouteParameters {
- payment_params: params.clone(),
- final_value_msat: path_last_hop.fee_msat,
- final_cltv_expiry_delta: params.final_cltv_expiry_delta.unwrap(),
- });
- } else if let Some(params) = payment_params {
- retry = Some(RouteParameters {
- payment_params: params.clone(),
- final_value_msat: path_last_hop.fee_msat,
- final_cltv_expiry_delta:
- if let Some(delta) = params.final_cltv_expiry_delta { delta }
- else { path_last_hop.cltv_expiry_delta },
- });
- }
-
- if payment_is_probe || !is_retryable_now || !payment_retryable || retry.is_none() {