|
|
|
|
@ -944,12 +944,12 @@ func (b *LocalBackend) pauseOrResumeControlClientLocked() {
|
|
|
|
|
// down, clients switch over to other replicas whilst the existing connections are kept alive for some period of time.
|
|
|
|
|
func (b *LocalBackend) DisconnectControl() {
|
|
|
|
|
b.mu.Lock()
|
|
|
|
|
defer b.mu.Unlock()
|
|
|
|
|
cc := b.resetControlClientLocked()
|
|
|
|
|
if cc == nil {
|
|
|
|
|
return
|
|
|
|
|
b.mu.Unlock()
|
|
|
|
|
|
|
|
|
|
if cc != nil {
|
|
|
|
|
cc.Shutdown()
|
|
|
|
|
}
|
|
|
|
|
cc.Shutdown()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// linkChange is our network monitor callback, called whenever the network changes.
|
|
|
|
|
@ -2408,7 +2408,8 @@ func (b *LocalBackend) startLocked(opts ipn.Options) error {
|
|
|
|
|
var clientToShutdown controlclient.Client
|
|
|
|
|
defer func() {
|
|
|
|
|
if clientToShutdown != nil {
|
|
|
|
|
clientToShutdown.Shutdown()
|
|
|
|
|
// Shutdown outside of b.mu to avoid deadlocks.
|
|
|
|
|
b.goTracker.Go(clientToShutdown.Shutdown)
|
|
|
|
|
}
|
|
|
|
|
}()
|
|
|
|
|
|
|
|
|
|
@ -6891,7 +6892,8 @@ func (b *LocalBackend) resetForProfileChangeLocked() error {
|
|
|
|
|
// Reset the NetworkMap in the engine
|
|
|
|
|
b.e.SetNetworkMap(new(netmap.NetworkMap))
|
|
|
|
|
if prevCC := b.resetControlClientLocked(); prevCC != nil {
|
|
|
|
|
defer prevCC.Shutdown()
|
|
|
|
|
// Shutdown outside of b.mu to avoid deadlocks.
|
|
|
|
|
b.goTracker.Go(prevCC.Shutdown)
|
|
|
|
|
}
|
|
|
|
|
// TKA errors should not prevent resetting the backend state.
|
|
|
|
|
// However, we should still return the error to the caller.
|
|
|
|
|
@ -6972,7 +6974,8 @@ func (b *LocalBackend) ResetAuth() error {
|
|
|
|
|
defer b.mu.Unlock()
|
|
|
|
|
|
|
|
|
|
if prevCC := b.resetControlClientLocked(); prevCC != nil {
|
|
|
|
|
defer prevCC.Shutdown()
|
|
|
|
|
// Shutdown outside of b.mu to avoid deadlocks.
|
|
|
|
|
b.goTracker.Go(prevCC.Shutdown)
|
|
|
|
|
}
|
|
|
|
|
if err := b.clearMachineKeyLocked(); err != nil {
|
|
|
|
|
return err
|
|
|
|
|
|