diff --git a/client/internal/connect.go b/client/internal/connect.go index 75c1aa75b..d036140e2 100644 --- a/client/internal/connect.go +++ b/client/internal/connect.go @@ -4,7 +4,6 @@ import ( "context" "errors" "fmt" - "github.com/netbirdio/netbird/client/internal/updatemanager" "net" "net/netip" "runtime" @@ -26,6 +25,7 @@ import ( "github.com/netbirdio/netbird/client/internal/peer" "github.com/netbirdio/netbird/client/internal/profilemanager" "github.com/netbirdio/netbird/client/internal/stdnet" + nbnet "github.com/netbirdio/netbird/client/net" cProto "github.com/netbirdio/netbird/client/proto" "github.com/netbirdio/netbird/client/ssh" "github.com/netbirdio/netbird/client/system" @@ -35,7 +35,6 @@ import ( relayClient "github.com/netbirdio/netbird/shared/relay/client" signal "github.com/netbirdio/netbird/shared/signal/client" "github.com/netbirdio/netbird/util" - nbnet "github.com/netbirdio/netbird/client/net" "github.com/netbirdio/netbird/version" ) @@ -274,16 +273,7 @@ func (c *ConnectClient) run(mobileDependency MobileDependency, runningChan chan c.engineMutex.Lock() c.engine = NewEngine(engineCtx, cancel, signalClient, mgmClient, relayManager, engineConfig, mobileDependency, c.statusRecorder, checks) if loginResp.PeerConfig != nil && loginResp.PeerConfig.AutoUpdate != nil { - if c.engine.updateManager == nil && loginResp.PeerConfig.AutoUpdate.Version != "disabled" { - c.engine.updateManager = updatemanager.NewUpdateManager(c.statusRecorder, c.engine.stateManager) - c.engine.updateManager.StartWithTimeout(engineCtx, time.Minute) - } else if c.engine.updateManager != nil && loginResp.PeerConfig.AutoUpdate.Version == "disabled" { - c.engine.updateManager.Stop() - c.engine.updateManager = nil - } - if c.engine.updateManager != nil { - c.engine.updateManager.SetVersion(loginResp.PeerConfig.AutoUpdate.Version) - } + c.engine.handleAutoUpdateVersion(loginResp.PeerConfig.AutoUpdate) } c.engine.SetSyncResponsePersistence(c.persistSyncResponse) c.engineMutex.Unlock() diff --git a/client/internal/updatemanager/manager.go b/client/internal/updatemanager/manager.go index 77b0f3520..c8b5baf1f 100644 --- a/client/internal/updatemanager/manager.go +++ b/client/internal/updatemanager/manager.go @@ -3,7 +3,6 @@ package updatemanager import ( "context" "fmt" - "github.com/netbirdio/netbird/client/internal/statemanager" "io" "net/http" "os" @@ -17,6 +16,7 @@ import ( log "github.com/sirupsen/logrus" "github.com/netbirdio/netbird/client/internal/peer" + "github.com/netbirdio/netbird/client/internal/statemanager" cProto "github.com/netbirdio/netbird/client/proto" "github.com/netbirdio/netbird/version" ) @@ -103,7 +103,6 @@ func (u *UpdateManager) Start(ctx context.Context) { } func (u *UpdateManager) startInit(ctx context.Context) { - go u.update.StartFetcher() u.update.SetDaemonVersion(u.currentVersion) u.update.SetOnUpdateListener(func() { select { @@ -111,6 +110,7 @@ func (u *UpdateManager) startInit(ctx context.Context) { default: } }) + go u.update.StartFetcher() u.stateManager.RegisterState(&UpdateState{}) if err := u.stateManager.LoadState(&UpdateState{}); err != nil { @@ -190,6 +190,8 @@ func (u *UpdateManager) onContextCancel() { return } + u.expectedVersionMutex.Lock() + defer u.expectedVersionMutex.Unlock() if u.update != nil { u.update.StopWatch() u.update = nil