mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-08-27 14:11:04 +02:00
52 lines
1.9 KiB
Go
52 lines
1.9 KiB
Go
package lncfg
|
|
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
)
|
|
|
|
var (
|
|
// MaxMailboxDeliveryTimeout specifies the max allowed timeout value.
|
|
// This value is derived from the itest `async_bidirectional_payments`,
|
|
// where both side send 483 payments at the same time to stress test
|
|
// lnd.
|
|
MaxMailboxDeliveryTimeout = 2 * time.Minute
|
|
|
|
// minQuiescenceTimeout specifies the minimal timeout value that can be
|
|
// used for `QuiescenceTimeout`.
|
|
minQuiescenceTimeout = 30 * time.Second
|
|
|
|
// DefaultQuiescenceTimeout specifies the default value to be used for
|
|
// `QuiescenceTimeout`.
|
|
DefaultQuiescenceTimeout = 60 * time.Second
|
|
)
|
|
|
|
//nolint:ll
|
|
type Htlcswitch struct {
|
|
MailboxDeliveryTimeout time.Duration `long:"mailboxdeliverytimeout" description:"The timeout value when delivering HTLCs to a channel link. Setting this value too small will result in local payment failures if large number of payments are sent over a short period."`
|
|
|
|
QuiescenceTimeout time.Duration `long:"quiescencetimeout" description:"The max duration that the channel can be quiesced. Any dependent protocols (dynamic commitments, splicing, etc.) must finish their operations under this timeout value, otherwise the node will disconnect."`
|
|
}
|
|
|
|
// Validate checks the values configured for htlcswitch.
|
|
func (h *Htlcswitch) Validate() error {
|
|
if h.MailboxDeliveryTimeout <= 0 {
|
|
return fmt.Errorf("mailboxdeliverytimeout must be positive")
|
|
}
|
|
|
|
if h.MailboxDeliveryTimeout > MaxMailboxDeliveryTimeout {
|
|
return fmt.Errorf("mailboxdeliverytimeout: %v exceeds "+
|
|
"maximum: %v", h.MailboxDeliveryTimeout,
|
|
MaxMailboxDeliveryTimeout)
|
|
}
|
|
|
|
// Skip the validation for integration tests so we can use a smaller
|
|
// timeout value to check the timeout behavior.
|
|
if !IsDevBuild() && h.QuiescenceTimeout < minQuiescenceTimeout {
|
|
return fmt.Errorf("quiescencetimeout: %v below minimal: %v",
|
|
h.QuiescenceTimeout, minQuiescenceTimeout)
|
|
}
|
|
|
|
return nil
|
|
}
|