X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;ds=sidebyside;f=lightning-invoice%2Fsrc%2Fpayment.rs;h=b8f564ef573bf9b37dba86350bf73df745f42b0a;hb=83e76d78b721bf632e379b9a40840330b6b28e35;hp=e51638f5120c2247a28ec0033bc90429f4755454;hpb=a6039b9af2a82f4b28108fb1be0e5c1dd3035c0b;p=rust-lightning diff --git a/lightning-invoice/src/payment.rs b/lightning-invoice/src/payment.rs index e51638f5..b8f564ef 100644 --- a/lightning-invoice/src/payment.rs +++ b/lightning-invoice/src/payment.rs @@ -10,16 +10,12 @@ //! Convenient utilities for paying Lightning invoices. use crate::Bolt11Invoice; -use crate::prelude::*; - -use bitcoin_hashes::Hash; +use bitcoin::hashes::Hash; use lightning::ln::PaymentHash; use lightning::ln::channelmanager::RecipientOnionFields; use lightning::routing::router::{PaymentParameters, RouteParameters}; -use core::time::Duration; - /// Builds the necessary parameters to pay or pre-flight probe the given zero-amount /// [`Bolt11Invoice`] using [`ChannelManager::send_payment`] or /// [`ChannelManager::send_preflight_probes`]. @@ -61,13 +57,9 @@ pub fn payment_parameters_from_invoice(invoice: &Bolt11Invoice) } } -fn expiry_time_from_unix_epoch(invoice: &Bolt11Invoice) -> Duration { - invoice.signed_invoice.raw_invoice.data.timestamp.0 + invoice.expiry_time() -} - fn params_from_invoice(invoice: &Bolt11Invoice, amount_msat: u64) -> (PaymentHash, RecipientOnionFields, RouteParameters) { - let payment_hash = PaymentHash((*invoice.payment_hash()).into_inner()); + let payment_hash = PaymentHash((*invoice.payment_hash()).to_byte_array()); let mut recipient_onion = RecipientOnionFields::secret_only(*invoice.payment_secret()); recipient_onion.payment_metadata = invoice.payment_metadata().map(|v| v.clone()); @@ -76,8 +68,10 @@ fn params_from_invoice(invoice: &Bolt11Invoice, amount_msat: u64) invoice.recover_payee_pub_key(), invoice.min_final_cltv_expiry_delta() as u32 ) - .with_expiry_time(expiry_time_from_unix_epoch(invoice).as_secs()) .with_route_hints(invoice.route_hints()).unwrap(); + if let Some(expiry) = invoice.expires_at() { + payment_params = payment_params.with_expiry_time(expiry.as_secs()); + } if let Some(features) = invoice.features() { payment_params = payment_params.with_bolt11_features(features.clone()).unwrap(); } @@ -90,7 +84,7 @@ fn params_from_invoice(invoice: &Bolt11Invoice, amount_msat: u64) mod tests { use super::*; use crate::{InvoiceBuilder, Currency}; - use bitcoin_hashes::sha256::Hash as Sha256; + use bitcoin::hashes::sha256::Hash as Sha256; use lightning::events::Event; use lightning::ln::channelmanager::{Retry, PaymentId}; use lightning::ln::msgs::ChannelMessageHandler;