@@ -10182,7 +10182,7 @@ where
10182
10182
Ok((payment_hash, payment_secret)) => {
10183
10183
let payment_context = PaymentContext::Bolt12Refund(Bolt12RefundContext {});
10184
10184
let payment_paths = self.create_blinded_payment_paths(
10185
- Some(amount_msats), payment_secret, payment_context
10185
+ Some(amount_msats), payment_secret, payment_context, relative_expiry,
10186
10186
)
10187
10187
.map_err(|_| Bolt12SemanticError::MissingPaths)?;
10188
10188
@@ -10489,16 +10489,22 @@ where
10489
10489
/// Creates multi-hop blinded payment paths for the given `amount_msats` by delegating to
10490
10490
/// [`Router::create_blinded_payment_paths`].
10491
10491
fn create_blinded_payment_paths(
10492
- &self, amount_msats: Option<u64>, payment_secret: PaymentSecret, payment_context: PaymentContext
10492
+ &self, amount_msats: Option<u64>, payment_secret: PaymentSecret, payment_context: PaymentContext,
10493
+ relative_expiry_seconds: u32
10493
10494
) -> Result<Vec<BlindedPaymentPath>, ()> {
10494
10495
let expanded_key = &self.inbound_payment_key;
10495
10496
let entropy = &*self.entropy_source;
10496
10497
let secp_ctx = &self.secp_ctx;
10497
10498
10498
10499
let first_hops = self.list_usable_channels();
10499
10500
let payee_node_id = self.get_our_node_id();
10500
- let max_cltv_expiry = self.best_block.read().unwrap().height + CLTV_FAR_FAR_AWAY
10501
- + LATENCY_GRACE_PERIOD_BLOCKS;
10501
+
10502
+ // Assume shorter than usual block times to avoid spuriously failing payments too early.
10503
+ const SECONDS_PER_BLOCK: u32 = 9 * 60;
10504
+ let relative_expiry_blocks = relative_expiry_seconds / SECONDS_PER_BLOCK;
10505
+ let max_cltv_expiry = core::cmp::max(relative_expiry_blocks, CLTV_FAR_FAR_AWAY)
10506
+ .saturating_add(LATENCY_GRACE_PERIOD_BLOCKS)
10507
+ .saturating_add(self.best_block.read().unwrap().height);
10502
10508
10503
10509
let payee_tlvs = UnauthenticatedReceiveTlvs {
10504
10510
payment_secret,
@@ -12048,7 +12054,7 @@ where
12048
12054
invoice_request: invoice_request.fields(),
12049
12055
});
12050
12056
let payment_paths = match self.create_blinded_payment_paths(
12051
- Some(amount_msats), payment_secret, payment_context
12057
+ Some(amount_msats), payment_secret, payment_context, relative_expiry
12052
12058
) {
12053
12059
Ok(payment_paths) => payment_paths,
12054
12060
Err(()) => {
0 commit comments