mirror of
https://github.com/slackhq/nebula.git
synced 2025-11-08 23:53:58 +01:00
Fix handshake retry regression (#842)
This commit is contained in:
parent
fd99ce9a71
commit
d3fe3efcb0
@ -53,10 +53,6 @@ type HandshakeManager struct {
|
|||||||
metricTimedOut metrics.Counter
|
metricTimedOut metrics.Counter
|
||||||
l *logrus.Logger
|
l *logrus.Logger
|
||||||
|
|
||||||
// vpnIps is another map similar to the pending hostmap but tracks entries in the wheel instead
|
|
||||||
// this is to avoid situations where the same vpn ip enters the wheel and causes rapid fire handshaking
|
|
||||||
vpnIps map[iputil.VpnIp]struct{}
|
|
||||||
|
|
||||||
// can be used to trigger outbound handshake for the given vpnIp
|
// can be used to trigger outbound handshake for the given vpnIp
|
||||||
trigger chan iputil.VpnIp
|
trigger chan iputil.VpnIp
|
||||||
}
|
}
|
||||||
@ -70,7 +66,6 @@ func NewHandshakeManager(l *logrus.Logger, tunCidr *net.IPNet, preferredRanges [
|
|||||||
config: config,
|
config: config,
|
||||||
trigger: make(chan iputil.VpnIp, config.triggerBuffer),
|
trigger: make(chan iputil.VpnIp, config.triggerBuffer),
|
||||||
OutboundHandshakeTimer: NewLockingTimerWheel[iputil.VpnIp](config.tryInterval, hsTimeout(config.retries, config.tryInterval)),
|
OutboundHandshakeTimer: NewLockingTimerWheel[iputil.VpnIp](config.tryInterval, hsTimeout(config.retries, config.tryInterval)),
|
||||||
vpnIps: map[iputil.VpnIp]struct{}{},
|
|
||||||
messageMetrics: config.messageMetrics,
|
messageMetrics: config.messageMetrics,
|
||||||
metricInitiated: metrics.GetOrRegisterCounter("handshake_manager.initiated", nil),
|
metricInitiated: metrics.GetOrRegisterCounter("handshake_manager.initiated", nil),
|
||||||
metricTimedOut: metrics.GetOrRegisterCounter("handshake_manager.timed_out", nil),
|
metricTimedOut: metrics.GetOrRegisterCounter("handshake_manager.timed_out", nil),
|
||||||
@ -108,7 +103,6 @@ func (c *HandshakeManager) NextOutboundHandshakeTimerTick(now time.Time, f udp.E
|
|||||||
func (c *HandshakeManager) handleOutbound(vpnIp iputil.VpnIp, f udp.EncWriter, lighthouseTriggered bool) {
|
func (c *HandshakeManager) handleOutbound(vpnIp iputil.VpnIp, f udp.EncWriter, lighthouseTriggered bool) {
|
||||||
hostinfo, err := c.pendingHostMap.QueryVpnIp(vpnIp)
|
hostinfo, err := c.pendingHostMap.QueryVpnIp(vpnIp)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
delete(c.vpnIps, vpnIp)
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
hostinfo.Lock()
|
hostinfo.Lock()
|
||||||
@ -298,10 +292,7 @@ func (c *HandshakeManager) AddVpnIp(vpnIp iputil.VpnIp, init func(*HostInfo)) *H
|
|||||||
hostinfo, created := c.pendingHostMap.AddVpnIp(vpnIp, init)
|
hostinfo, created := c.pendingHostMap.AddVpnIp(vpnIp, init)
|
||||||
|
|
||||||
if created {
|
if created {
|
||||||
if _, ok := c.vpnIps[vpnIp]; !ok {
|
|
||||||
c.OutboundHandshakeTimer.Add(vpnIp, c.config.tryInterval)
|
c.OutboundHandshakeTimer.Add(vpnIp, c.config.tryInterval)
|
||||||
}
|
|
||||||
c.vpnIps[vpnIp] = struct{}{}
|
|
||||||
c.metricInitiated.Inc(1)
|
c.metricInitiated.Inc(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user