funding: cap the max_htlc value at channel capacity

We are not longer validating the max_value_in_flight field set by the
remote peer, so it is not always less than the channel capacity anymore.
We therefore make sure to cap it before advertising it.
This commit is contained in:
Johan T. Halseth 2019-01-30 09:05:01 +01:00
parent 441307e8f7
commit da42ad245f
No known key found for this signature in database
GPG Key ID: 15BAADA29DA20D26

@ -2111,10 +2111,12 @@ func (f *fundingManager) addToRouterGraph(completeChan *channeldb.OpenChannel,
// We'll obtain the max HTLC value we can forward in our direction, as // We'll obtain the max HTLC value we can forward in our direction, as
// we'll use this value within our ChannelUpdate. This value must be <= // we'll use this value within our ChannelUpdate. This value must be <=
// channel capacity and <= the maximum in-flight msats set by the peer, so // channel capacity and <= the maximum in-flight msats set by the peer.
// we default to max in-flight msats as this value will always be <=
// channel capacity.
fwdMaxHTLC := completeChan.LocalChanCfg.MaxPendingAmount fwdMaxHTLC := completeChan.LocalChanCfg.MaxPendingAmount
capacityMSat := lnwire.NewMSatFromSatoshis(completeChan.Capacity)
if fwdMaxHTLC > capacityMSat {
fwdMaxHTLC = capacityMSat
}
ann, err := f.newChanAnnouncement( ann, err := f.newChanAnnouncement(
f.cfg.IDKey, completeChan.IdentityPub, f.cfg.IDKey, completeChan.IdentityPub,
@ -2285,12 +2287,15 @@ func (f *fundingManager) annAfterSixConfs(completeChan *channeldb.OpenChannel,
// HTLC it deems economically relevant. // HTLC it deems economically relevant.
fwdMinHTLC := completeChan.LocalChanCfg.MinHTLC fwdMinHTLC := completeChan.LocalChanCfg.MinHTLC
// We'll obtain the max HTLC value we can forward in our direction, as // We'll obtain the max HTLC value we can forward in our
// we'll use this value within our ChannelUpdate. This value must be <= // direction, as we'll use this value within our ChannelUpdate.
// channel capacity and <= the maximum in-flight msats set by the peer, // This value must be <= channel capacity and <= the maximum
// so we default to max in-flight msats as this value will always be <= // in-flight msats set by the peer.
// channel capacity.
fwdMaxHTLC := completeChan.LocalChanCfg.MaxPendingAmount fwdMaxHTLC := completeChan.LocalChanCfg.MaxPendingAmount
capacityMSat := lnwire.NewMSatFromSatoshis(completeChan.Capacity)
if fwdMaxHTLC > capacityMSat {
fwdMaxHTLC = capacityMSat
}
// Create and broadcast the proofs required to make this channel // Create and broadcast the proofs required to make this channel
// public and usable for other nodes for routing. // public and usable for other nodes for routing.