mirror of
https://github.com/netbirdio/netbird.git
synced 2025-03-05 10:21:12 +01:00
Fix isConnected logic in reconnection loop
This commit is contained in:
parent
1097285d80
commit
2576221315
@ -337,14 +337,10 @@ func (conn *Conn) reconnectLoopWithRetry() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// checks if there is peer connection is established via relay or ice and that it has a wireguard handshake and skip offer
|
// checks if there is peer connection is established via relay or ice and that it has a wireguard handshake and skip offer
|
||||||
// todo check wg handshake
|
|
||||||
conn.log.Tracef("ticker timedout, relay state: %s, ice state: %s", conn.statusRelay, conn.statusICE)
|
conn.log.Tracef("ticker timedout, relay state: %s, ice state: %s", conn.statusRelay, conn.statusICE)
|
||||||
conn.mu.Lock()
|
if conn.isConnected() {
|
||||||
if conn.statusRelay == StatusConnected && conn.statusICE == StatusConnected {
|
|
||||||
conn.mu.Unlock()
|
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
conn.mu.Unlock()
|
|
||||||
|
|
||||||
conn.log.Debugf("ticker timed out, retry to do handshake")
|
conn.log.Debugf("ticker timed out, retry to do handshake")
|
||||||
err := conn.handshaker.sendOffer()
|
err := conn.handshaker.sendOffer()
|
||||||
@ -495,7 +491,7 @@ func (conn *Conn) iCEConnectionIsReady(priority ConnPriority, iceConnInfo ICECon
|
|||||||
conn.doOnConnected(iceConnInfo.RosenpassPubKey, iceConnInfo.RosenpassAddr)
|
conn.doOnConnected(iceConnInfo.RosenpassPubKey, iceConnInfo.RosenpassAddr)
|
||||||
}
|
}
|
||||||
|
|
||||||
// todo review to make sense to handle connection and disconnected status also?
|
// todo review to make sense to handle connecting and disconnected status also?
|
||||||
func (conn *Conn) onWorkerICEStateDisconnected(newState ConnStatus) {
|
func (conn *Conn) onWorkerICEStateDisconnected(newState ConnStatus) {
|
||||||
conn.mu.Lock()
|
conn.mu.Lock()
|
||||||
defer conn.mu.Unlock()
|
defer conn.mu.Unlock()
|
||||||
@ -715,6 +711,31 @@ func (conn *Conn) evalStatus() ConnStatus {
|
|||||||
return StatusDisconnected
|
return StatusDisconnected
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (conn *Conn) isConnected() bool {
|
||||||
|
conn.mu.Lock()
|
||||||
|
defer conn.mu.Unlock()
|
||||||
|
|
||||||
|
if conn.statusRelay != StatusConnected {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
if conn.statusICE != StatusConnected && conn.statusICE != StatusConnecting {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
wgStats, err := conn.config.WgConfig.WgInterface.GetStats(conn.config.Key)
|
||||||
|
if err != nil {
|
||||||
|
conn.log.Errorf("failed to get wg stats: %v", err)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
if time.Since(wgStats.LastHandshake) > 2*time.Minute {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
func isRosenpassEnabled(remoteRosenpassPubKey []byte) bool {
|
func isRosenpassEnabled(remoteRosenpassPubKey []byte) bool {
|
||||||
return remoteRosenpassPubKey != nil
|
return remoteRosenpassPubKey != nil
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user