mirror of
https://github.com/netbirdio/netbird.git
synced 2026-04-05 09:04:09 -04:00
[client] make ICE failed timeout configurable (#4211)
This commit is contained in:
@@ -18,17 +18,15 @@ const (
|
|||||||
|
|
||||||
iceKeepAliveDefault = 4 * time.Second
|
iceKeepAliveDefault = 4 * time.Second
|
||||||
iceDisconnectedTimeoutDefault = 6 * time.Second
|
iceDisconnectedTimeoutDefault = 6 * time.Second
|
||||||
|
iceFailedTimeoutDefault = 6 * time.Second
|
||||||
// iceRelayAcceptanceMinWaitDefault is the same as in the Pion ICE package
|
// iceRelayAcceptanceMinWaitDefault is the same as in the Pion ICE package
|
||||||
iceRelayAcceptanceMinWaitDefault = 2 * time.Second
|
iceRelayAcceptanceMinWaitDefault = 2 * time.Second
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
|
||||||
failedTimeout = 6 * time.Second
|
|
||||||
)
|
|
||||||
|
|
||||||
func NewAgent(iFaceDiscover stdnet.ExternalIFaceDiscover, config Config, candidateTypes []ice.CandidateType, ufrag string, pwd string) (*ice.Agent, error) {
|
func NewAgent(iFaceDiscover stdnet.ExternalIFaceDiscover, config Config, candidateTypes []ice.CandidateType, ufrag string, pwd string) (*ice.Agent, error) {
|
||||||
iceKeepAlive := iceKeepAlive()
|
iceKeepAlive := iceKeepAlive()
|
||||||
iceDisconnectedTimeout := iceDisconnectedTimeout()
|
iceDisconnectedTimeout := iceDisconnectedTimeout()
|
||||||
|
iceFailedTimeout := iceFailedTimeout()
|
||||||
iceRelayAcceptanceMinWait := iceRelayAcceptanceMinWait()
|
iceRelayAcceptanceMinWait := iceRelayAcceptanceMinWait()
|
||||||
|
|
||||||
transportNet, err := newStdNet(iFaceDiscover, config.InterfaceBlackList)
|
transportNet, err := newStdNet(iFaceDiscover, config.InterfaceBlackList)
|
||||||
@@ -50,7 +48,7 @@ func NewAgent(iFaceDiscover stdnet.ExternalIFaceDiscover, config Config, candida
|
|||||||
UDPMuxSrflx: config.UDPMuxSrflx,
|
UDPMuxSrflx: config.UDPMuxSrflx,
|
||||||
NAT1To1IPs: config.NATExternalIPs,
|
NAT1To1IPs: config.NATExternalIPs,
|
||||||
Net: transportNet,
|
Net: transportNet,
|
||||||
FailedTimeout: &failedTimeout,
|
FailedTimeout: &iceFailedTimeout,
|
||||||
DisconnectedTimeout: &iceDisconnectedTimeout,
|
DisconnectedTimeout: &iceDisconnectedTimeout,
|
||||||
KeepaliveInterval: &iceKeepAlive,
|
KeepaliveInterval: &iceKeepAlive,
|
||||||
RelayAcceptanceMinWait: &iceRelayAcceptanceMinWait,
|
RelayAcceptanceMinWait: &iceRelayAcceptanceMinWait,
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ const (
|
|||||||
envICEForceRelayConn = "NB_ICE_FORCE_RELAY_CONN"
|
envICEForceRelayConn = "NB_ICE_FORCE_RELAY_CONN"
|
||||||
envICEKeepAliveIntervalSec = "NB_ICE_KEEP_ALIVE_INTERVAL_SEC"
|
envICEKeepAliveIntervalSec = "NB_ICE_KEEP_ALIVE_INTERVAL_SEC"
|
||||||
envICEDisconnectedTimeoutSec = "NB_ICE_DISCONNECTED_TIMEOUT_SEC"
|
envICEDisconnectedTimeoutSec = "NB_ICE_DISCONNECTED_TIMEOUT_SEC"
|
||||||
|
envICEFailedTimeoutSec = "NB_ICE_FAILED_TIMEOUT_SEC"
|
||||||
envICERelayAcceptanceMinWaitSec = "NB_ICE_RELAY_ACCEPTANCE_MIN_WAIT_SEC"
|
envICERelayAcceptanceMinWaitSec = "NB_ICE_RELAY_ACCEPTANCE_MIN_WAIT_SEC"
|
||||||
|
|
||||||
msgWarnInvalidValue = "invalid value %s set for %s, using default %v"
|
msgWarnInvalidValue = "invalid value %s set for %s, using default %v"
|
||||||
@@ -55,6 +56,22 @@ func iceDisconnectedTimeout() time.Duration {
|
|||||||
return time.Duration(disconnectedTimeoutSec) * time.Second
|
return time.Duration(disconnectedTimeoutSec) * time.Second
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func iceFailedTimeout() time.Duration {
|
||||||
|
failedTimeoutEnv := os.Getenv(envICEFailedTimeoutSec)
|
||||||
|
if failedTimeoutEnv == "" {
|
||||||
|
return iceFailedTimeoutDefault
|
||||||
|
}
|
||||||
|
|
||||||
|
log.Infof("setting ICE failed timeout to %s seconds", failedTimeoutEnv)
|
||||||
|
failedTimeoutSec, err := strconv.Atoi(failedTimeoutEnv)
|
||||||
|
if err != nil {
|
||||||
|
log.Warnf(msgWarnInvalidValue, failedTimeoutEnv, envICEFailedTimeoutSec, iceFailedTimeoutDefault)
|
||||||
|
return iceFailedTimeoutDefault
|
||||||
|
}
|
||||||
|
|
||||||
|
return time.Duration(failedTimeoutSec) * time.Second
|
||||||
|
}
|
||||||
|
|
||||||
func iceRelayAcceptanceMinWait() time.Duration {
|
func iceRelayAcceptanceMinWait() time.Duration {
|
||||||
iceRelayAcceptanceMinWaitEnv := os.Getenv(envICERelayAcceptanceMinWaitSec)
|
iceRelayAcceptanceMinWaitEnv := os.Getenv(envICERelayAcceptanceMinWaitSec)
|
||||||
if iceRelayAcceptanceMinWaitEnv == "" {
|
if iceRelayAcceptanceMinWaitEnv == "" {
|
||||||
|
|||||||
Reference in New Issue
Block a user