Skip to content

Commit 0dca193

Browse files
committed
f liquidity check for offer-based amount
This commit uses the offer.amount() when amount_msats  is not provided.
1 parent 954bb1c commit 0dca193

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

lightning/src/ln/channelmanager.rs

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ use crate::ln::wire::Encode;
6464
use crate::offers::invoice::{BlindedPayInfo, Bolt12Invoice, DEFAULT_RELATIVE_EXPIRY, DerivedSigningPubkey, ExplicitSigningPubkey, InvoiceBuilder, UnsignedBolt12Invoice};
6565
use crate::offers::invoice_error::InvoiceError;
6666
use crate::offers::invoice_request::{DerivedPayerId, InvoiceRequestBuilder};
67-
use crate::offers::offer::{Offer, OfferBuilder};
67+
use crate::offers::offer::{Offer, OfferBuilder, Amount};
6868
use crate::offers::parse::Bolt12SemanticError;
6969
use crate::offers::refund::{Refund, RefundBuilder};
7070
use crate::onion_message::async_payments::{AsyncPaymentsMessage, HeldHtlcAvailable, ReleaseHeldHtlc, AsyncPaymentsMessageHandler};
@@ -8820,9 +8820,19 @@ where
88208820
let invoice_request = builder.build_and_sign()?;
88218821

88228822
let total_liquidity: u64 = self.list_usable_channels().iter().map(|channel| channel.next_outbound_htlc_limit_msat).sum();
8823-
if invoice_request.amount_msats() > Some(total_liquidity) {
8824-
log_error!(self.logger, "Insufficient liquidity for payment with payment id: {}", payment_id);
8825-
return Err(Bolt12SemanticError::InsufficientLiquidity);
8823+
let total_amount_msats = match invoice_request.amount_msats() {
8824+
Some(amount_msats) => Some(amount_msats),
8825+
None => match offer.amount() {
8826+
Some(Amount::Bitcoin { amount_msats }) => Some(amount_msats),
8827+
_ => None,
8828+
},
8829+
};
8830+
8831+
if let Some(amount) = total_amount_msats {
8832+
if amount > total_liquidity {
8833+
log_error!(self.logger, "Insufficient liquidity for payment with payment id: {}", payment_id);
8834+
return Err(Bolt12SemanticError::InsufficientLiquidity);
8835+
}
88268836
}
88278837

88288838
let context = OffersContext::OutboundPayment { payment_id };

0 commit comments

Comments
 (0)