Skip to content

Commit

Permalink
Merge pull request #2831 from jkczyz/2024-01-fix-cltv-expiry-delta
Browse files Browse the repository at this point in the history
Use consistent `cltv_expiry_delta` in `ForwardTlvs`
  • Loading branch information
TheBlueMatt authored Jan 17, 2024
2 parents a97f945 + 8053aa3 commit fbeb7ac
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 13 deletions.
18 changes: 15 additions & 3 deletions lightning/src/blinded_path/payment.rs
Original file line number Diff line number Diff line change
Expand Up @@ -97,12 +97,24 @@ pub struct PaymentConstraints {
pub htlc_minimum_msat: u64,
}

impl From<CounterpartyForwardingInfo> for PaymentRelay {
fn from(info: CounterpartyForwardingInfo) -> Self {
impl TryFrom<CounterpartyForwardingInfo> for PaymentRelay {
type Error = ();

fn try_from(info: CounterpartyForwardingInfo) -> Result<Self, ()> {
let CounterpartyForwardingInfo {
fee_base_msat, fee_proportional_millionths, cltv_expiry_delta
} = info;
Self { cltv_expiry_delta, fee_proportional_millionths, fee_base_msat }

// Avoid exposing esoteric CLTV expiry deltas
let cltv_expiry_delta = match cltv_expiry_delta {
0..=40 => 40,
41..=80 => 80,
81..=144 => 144,
145..=216 => 216,
_ => return Err(()),
};

Ok(Self { cltv_expiry_delta, fee_proportional_millionths, fee_base_msat })
}
}

Expand Down
15 changes: 5 additions & 10 deletions lightning/src/routing/router.rs
Original file line number Diff line number Diff line change
Expand Up @@ -114,19 +114,14 @@ impl<G: Deref<Target = NetworkGraph<L>> + Clone, L: Deref, S: Deref, SP: Sized,
None => return None,
};
let payment_relay: PaymentRelay = match details.counterparty.forwarding_info {
Some(forwarding_info) => forwarding_info.into(),
Some(forwarding_info) => match forwarding_info.try_into() {
Ok(payment_relay) => payment_relay,
Err(()) => return None,
},
None => return None,
};

// Avoid exposing esoteric CLTV expiry deltas
let cltv_expiry_delta = match payment_relay.cltv_expiry_delta {
0..=40 => 40u32,
41..=80 => 80u32,
81..=144 => 144u32,
145..=216 => 216u32,
_ => return None,
};

let cltv_expiry_delta = payment_relay.cltv_expiry_delta as u32;
let payment_constraints = PaymentConstraints {
max_cltv_expiry: tlvs.payment_constraints.max_cltv_expiry + cltv_expiry_delta,
htlc_minimum_msat: details.inbound_htlc_minimum_msat.unwrap_or(0),
Expand Down

0 comments on commit fbeb7ac

Please sign in to comment.