routing: skip amtInRange for custom HTLCs

We might be trying to send an invoice amount that's greater than the size of the channel, but once you factor in the custom channel logic, an actual HTLC can be sent over the channel to pay that larger payment.

As a result, we'll skip over this check if a have a custom HTLC.
This commit is contained in:
Olaoluwa Osuntokun 2024-07-11 19:48:47 -07:00 committed by Oliver Gugger
parent 5b4de5f0d4
commit f04fa54622
No known key found for this signature in database
GPG Key ID: 8E4256593F177720

View File

@ -247,8 +247,13 @@ func (u *edgeUnifier) getEdgeLocal(netAmtReceived lnwire.MilliSatoshi,
// local channel.
amt := netAmtReceived + lnwire.MilliSatoshi(inboundFee)
// Check valid amount range for the channel.
if !edge.amtInRange(amt) {
// Check valid amount range for the channel. We skip this test
// for payments with custom HTLC data, as the amount sent on
// the BTC layer may differ from the amount that is actually
// forwarded in custom channels.
if bandwidthHints.firstHopCustomBlob().IsNone() &&
!edge.amtInRange(amt) {
log.Debugf("Amount %v not in range for edge %v",
netAmtReceived, edge.policy.ChannelID)