mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-12-19 20:25:51 +01:00
link: increase expiry grace delta
This commit increase the expiry grace delta to a value above the broadcast delta. This prevents htlcs from being accepted that would immediately trigger a channel force close. A correct delta is generated in server.go where there is access to the broadcast delta and passed via the peer to the links. Co-authored-by: Jim Posen <jim.posen@gmail.com>
This commit is contained in:
20
peer.go
20
peer.go
@@ -58,6 +58,13 @@ const (
|
||||
// messages to be sent across the wire, requested by objects outside
|
||||
// this struct.
|
||||
outgoingQueueLen = 50
|
||||
|
||||
// extraExpiryGraceDelta is the additional number of blocks required by
|
||||
// the ExpiryGraceDelta of the forwarding policy beyond the maximum
|
||||
// broadcast delta. This is the minimum number of blocks between the
|
||||
// expiry on an accepted or offered HTLC and the block height at which
|
||||
// we will go to chain.
|
||||
extraExpiryGraceDelta = 3
|
||||
)
|
||||
|
||||
// outgoingMsg packages an lnwire.Message to be sent out on the wire, along with
|
||||
@@ -199,6 +206,12 @@ type peer struct {
|
||||
// remote node.
|
||||
localFeatures *lnwire.RawFeatureVector
|
||||
|
||||
// expiryGraceDelta is the block time allowance for HTLCs offered and
|
||||
// received on channels with this peer. The parameter is used to
|
||||
// configure links with the peer. See ExpiryGraceDelta on
|
||||
// ChannelLinkConfig for more information.
|
||||
expiryGraceDelta uint32
|
||||
|
||||
// remoteLocalFeatures is the local feature vector received from the
|
||||
// peer during the connection handshake.
|
||||
remoteLocalFeatures *lnwire.FeatureVector
|
||||
@@ -236,7 +249,8 @@ var _ lnpeer.Peer = (*peer)(nil)
|
||||
func newPeer(conn net.Conn, connReq *connmgr.ConnReq, server *server,
|
||||
addr *lnwire.NetAddress, inbound bool,
|
||||
localFeatures *lnwire.RawFeatureVector,
|
||||
chanActiveTimeout time.Duration) (*peer, error) {
|
||||
chanActiveTimeout time.Duration, expiryGraceDelta uint32) (
|
||||
*peer, error) {
|
||||
|
||||
nodePub := addr.IdentityKey
|
||||
|
||||
@@ -249,7 +263,8 @@ func newPeer(conn net.Conn, connReq *connmgr.ConnReq, server *server,
|
||||
|
||||
server: server,
|
||||
|
||||
localFeatures: localFeatures,
|
||||
localFeatures: localFeatures,
|
||||
expiryGraceDelta: expiryGraceDelta,
|
||||
|
||||
sendQueue: make(chan outgoingMsg),
|
||||
outgoingQueue: make(chan outgoingMsg),
|
||||
@@ -587,6 +602,7 @@ func (p *peer) addLink(chanPoint *wire.OutPoint,
|
||||
UnsafeReplay: cfg.UnsafeReplay,
|
||||
MinFeeUpdateTimeout: htlcswitch.DefaultMinLinkFeeUpdateTimeout,
|
||||
MaxFeeUpdateTimeout: htlcswitch.DefaultMaxLinkFeeUpdateTimeout,
|
||||
ExpiryGraceDelta: p.expiryGraceDelta,
|
||||
}
|
||||
|
||||
link := htlcswitch.NewChannelLink(linkCfg, lnChan)
|
||||
|
||||
Reference in New Issue
Block a user