X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=lightning%2Fsrc%2Fblinded_path%2Fpayment.rs;h=5d332a76faf57fed3b2fe844b91d5c5d04ed8a81;hb=7c9463668a4f71663746e57bdb09ee6b91797d5a;hp=f4df1e379d931b3ac65cbcdae65441c629554c6c;hpb=db81c650baf2faa3a551bab216981ac84149176a;p=rust-lightning diff --git a/lightning/src/blinded_path/payment.rs b/lightning/src/blinded_path/payment.rs index f4df1e37..5d332a76 100644 --- a/lightning/src/blinded_path/payment.rs +++ b/lightning/src/blinded_path/payment.rs @@ -97,12 +97,24 @@ pub struct PaymentConstraints { pub htlc_minimum_msat: u64, } -impl From for PaymentRelay { - fn from(info: CounterpartyForwardingInfo) -> Self { +impl TryFrom for PaymentRelay { + type Error = (); + + fn try_from(info: CounterpartyForwardingInfo) -> Result { 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 }) } }