Skip to content

Commit a608b55

Browse files
committed
Use RouteParametersOverride to create new RouteParameters
1 parent 04da57c commit a608b55

File tree

2 files changed

+20
-13
lines changed

2 files changed

+20
-13
lines changed

lightning/src/ln/outbound_payment.rs

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -849,7 +849,7 @@ impl OutboundPayments {
849849
SP: Fn(SendAlongPathArgs) -> Result<(), APIError>,
850850
{
851851
let payment_hash = invoice.payment_hash();
852-
let max_total_routing_fee_msat;
852+
let params_override;
853853
let retry_strategy;
854854
match self.pending_outbound_payments.lock().unwrap().entry(payment_id) {
855855
hash_map::Entry::Occupied(entry) => match entry.get() {
@@ -864,9 +864,7 @@ impl OutboundPayments {
864864
params_override.with_max_total_routing_fee_msat(fee_msat)
865865
).or_else(|| Some(RouteParametersOverride::new().with_max_total_routing_fee_msat(fee_msat)))
866866
});
867-
max_total_routing_fee_msat = route_params_override.and_then(
868-
|params| params.max_total_routing_fee_msat
869-
);
867+
params_override = route_params_override;
870868
*entry.into_mut() = PendingOutboundPayment::InvoiceReceived {
871869
payment_hash,
872870
retry_strategy: *retry,
@@ -886,11 +884,12 @@ impl OutboundPayments {
886884
}
887885

888886
let mut route_params = RouteParameters::from_payment_params_and_value(
889-
PaymentParameters::from_bolt12_invoice(&invoice), invoice.amount_msats()
887+
PaymentParameters::from_bolt12_invoice(&invoice, params_override), invoice.amount_msats()
890888
);
891-
if let Some(max_fee_msat) = max_total_routing_fee_msat {
892-
route_params.max_total_routing_fee_msat = Some(max_fee_msat);
893-
}
889+
890+
params_override.and_then(|p| p.max_total_routing_fee_msat)
891+
.map(|max_fee_msat| route_params.max_total_routing_fee_msat = Some(max_fee_msat));
892+
894893
self.send_payment_for_bolt12_invoice_internal(
895894
payment_id, payment_hash, None, route_params, retry_strategy, router, first_hops,
896895
inflight_htlcs, entropy_source, node_signer, node_id_lookup, secp_ctx, best_block_height,
@@ -2718,7 +2717,7 @@ mod tests {
27182717

27192718
router.expect_find_route(
27202719
RouteParameters::from_payment_params_and_value(
2721-
PaymentParameters::from_bolt12_invoice(&invoice),
2720+
PaymentParameters::from_bolt12_invoice(&invoice, None),
27222721
invoice.amount_msats(),
27232722
),
27242723
Err(LightningError { err: String::new(), action: ErrorAction::IgnoreError }),
@@ -2770,7 +2769,7 @@ mod tests {
27702769
.sign(recipient_sign).unwrap();
27712770

27722771
let route_params = RouteParameters {
2773-
payment_params: PaymentParameters::from_bolt12_invoice(&invoice),
2772+
payment_params: PaymentParameters::from_bolt12_invoice(&invoice, None),
27742773
final_value_msat: invoice.amount_msats(),
27752774
max_total_routing_fee_msat: Some(1234),
27762775
};

lightning/src/routing/router.rs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -845,10 +845,18 @@ impl PaymentParameters {
845845
/// Creates parameters for paying to a blinded payee from the provided invoice. Sets
846846
/// [`Payee::Blinded::route_hints`], [`Payee::Blinded::features`], and
847847
/// [`PaymentParameters::expiry_time`].
848-
pub fn from_bolt12_invoice(invoice: &Bolt12Invoice) -> Self {
849-
Self::blinded(invoice.payment_paths().to_vec())
848+
pub fn from_bolt12_invoice(invoice: &Bolt12Invoice, params_override: Option<RouteParametersOverride>) -> Self {
849+
let mut payment_params = Self::blinded(invoice.payment_paths().to_vec())
850850
.with_bolt12_features(invoice.invoice_features().clone()).unwrap()
851-
.with_expiry_time(invoice.created_at().as_secs().saturating_add(invoice.relative_expiry().as_secs()))
851+
.with_expiry_time(invoice.created_at().as_secs().saturating_add(invoice.relative_expiry().as_secs()));
852+
853+
if let Some(params_override) = params_override {
854+
params_override.max_total_cltv_expiry_delta.map(|v| payment_params.max_total_cltv_expiry_delta = v);
855+
params_override.max_path_count.map(|v| payment_params.max_path_count = v);
856+
params_override.max_channel_saturation_power_of_half.map(|v| payment_params.max_channel_saturation_power_of_half = v);
857+
};
858+
859+
payment_params
852860
}
853861

854862
/// Creates parameters for paying to a blinded payee from the provided invoice. Sets

0 commit comments

Comments
 (0)