@@ -10143,7 +10143,7 @@ where
10143
10143
Ok((payment_hash, payment_secret)) => {
10144
10144
let payment_context = PaymentContext::Bolt12Refund(Bolt12RefundContext {});
10145
10145
let payment_paths = self.create_blinded_payment_paths(
10146
- Some(amount_msats), payment_secret, payment_context
10146
+ Some(amount_msats), payment_secret, payment_context, relative_expiry,
10147
10147
)
10148
10148
.map_err(|_| Bolt12SemanticError::MissingPaths)?;
10149
10149
@@ -10450,16 +10450,22 @@ where
10450
10450
/// Creates multi-hop blinded payment paths for the given `amount_msats` by delegating to
10451
10451
/// [`Router::create_blinded_payment_paths`].
10452
10452
fn create_blinded_payment_paths(
10453
- &self, amount_msats: Option<u64>, payment_secret: PaymentSecret, payment_context: PaymentContext
10453
+ &self, amount_msats: Option<u64>, payment_secret: PaymentSecret, payment_context: PaymentContext,
10454
+ relative_expiry_seconds: u32
10454
10455
) -> Result<Vec<BlindedPaymentPath>, ()> {
10455
10456
let expanded_key = &self.inbound_payment_key;
10456
10457
let entropy = &*self.entropy_source;
10457
10458
let secp_ctx = &self.secp_ctx;
10458
10459
10459
10460
let first_hops = self.list_usable_channels();
10460
10461
let payee_node_id = self.get_our_node_id();
10461
- let max_cltv_expiry = self.best_block.read().unwrap().height + CLTV_FAR_FAR_AWAY
10462
- + LATENCY_GRACE_PERIOD_BLOCKS;
10462
+
10463
+ // Assume shorter than usual block times to avoid spuriously failing payments too early.
10464
+ const SECONDS_PER_BLOCK: u32 = 9 * 60;
10465
+ let relative_expiry_blocks = relative_expiry_seconds / SECONDS_PER_BLOCK;
10466
+ let max_cltv_expiry = core::cmp::max(relative_expiry_blocks, CLTV_FAR_FAR_AWAY)
10467
+ .saturating_add(LATENCY_GRACE_PERIOD_BLOCKS)
10468
+ .saturating_add(self.best_block.read().unwrap().height);
10463
10469
10464
10470
let payee_tlvs = UnauthenticatedReceiveTlvs {
10465
10471
payment_secret,
@@ -12004,7 +12010,7 @@ where
12004
12010
invoice_request: invoice_request.fields(),
12005
12011
});
12006
12012
let payment_paths = match self.create_blinded_payment_paths(
12007
- Some(amount_msats), payment_secret, payment_context
12013
+ Some(amount_msats), payment_secret, payment_context, relative_expiry
12008
12014
) {
12009
12015
Ok(payment_paths) => payment_paths,
12010
12016
Err(()) => {
0 commit comments