discovery: push max htlc migration further up the call tree

As a preparation for making the gossiper less responsible for validating
and supplementing local channel policy updates, this commits moves the
on-the-fly max htlc migration up the call tree. The plan for a follow up
commit is to move it out of the gossiper completely for local channel
updates, so that we don't need to return a list of final applied policies
anymore.
This commit is contained in:
Joost Jager 2019-09-20 11:26:45 +02:00
parent 339ff357d1
commit 4b2eb9cb81
No known key found for this signature in database
GPG Key ID: A61B9D4C393C59C7

@ -1211,6 +1211,11 @@ func (d *AuthenticatedGossiper) retransmitStaleAnns(now time.Time) error {
// introduction of the MaxHTLC field, then we'll update this // introduction of the MaxHTLC field, then we'll update this
// edge to propagate this information in the network. // edge to propagate this information in the network.
if !edge.MessageFlags.HasMaxHtlc() { if !edge.MessageFlags.HasMaxHtlc() {
// We'll make sure we support the new max_htlc field if
// not already present.
edge.MessageFlags |= lnwire.ChanUpdateOptionMaxHtlc
edge.MaxHTLC = lnwire.NewMSatFromSatoshis(info.Capacity)
edgesToUpdate = append(edgesToUpdate, updateTuple{ edgesToUpdate = append(edgesToUpdate, updateTuple{
info: info, info: info,
edge: edge, edge: edge,
@ -1369,6 +1374,10 @@ func (d *AuthenticatedGossiper) processChanPolicyUpdate(
) )
edge.TimeLockDelta = uint16(policyUpdate.newSchema.TimeLockDelta) edge.TimeLockDelta = uint16(policyUpdate.newSchema.TimeLockDelta)
// Max htlc is currently always set to the channel capacity.
edge.MessageFlags |= lnwire.ChanUpdateOptionMaxHtlc
edge.MaxHTLC = lnwire.NewMSatFromSatoshis(info.Capacity)
edgesToUpdate = append(edgesToUpdate, edgeWithInfo{ edgesToUpdate = append(edgesToUpdate, edgeWithInfo{
info: info, info: info,
edge: edge, edge: edge,
@ -2514,13 +2523,6 @@ func (d *AuthenticatedGossiper) updateChannel(info *channeldb.ChannelEdgeInfo,
edge *channeldb.ChannelEdgePolicy) (*lnwire.ChannelAnnouncement, edge *channeldb.ChannelEdgePolicy) (*lnwire.ChannelAnnouncement,
*lnwire.ChannelUpdate, error) { *lnwire.ChannelUpdate, error) {
// We'll make sure we support the new max_htlc field if not already
// present.
if !edge.MessageFlags.HasMaxHtlc() {
edge.MessageFlags |= lnwire.ChanUpdateOptionMaxHtlc
edge.MaxHTLC = lnwire.NewMSatFromSatoshis(info.Capacity)
}
// Make sure timestamp is always increased, such that our update gets // Make sure timestamp is always increased, such that our update gets
// propagated. // propagated.
timestamp := time.Now().Unix() timestamp := time.Now().Unix()