ipn: fix Windows crash from improperly strict assertion

This commit is contained in:
Brad Fitzpatrick 2020-09-11 15:10:29 -07:00
parent a084c44afc
commit 3af64765fd
1 changed files with 11 additions and 1 deletions

View File

@ -1251,11 +1251,21 @@ func (b *LocalBackend) requestEngineStatusAndWait() {
// rebooting will fix it.
func (b *LocalBackend) Logout() {
b.mu.Lock()
b.assertClientLocked()
c := b.c
b.netMap = nil
b.mu.Unlock()
if c == nil {
// Double Logout can happen via repeated IPN
// connections to ipnserver making it repeatedly
// transition from 1->0 total connections, which on
// Windows by default ("client mode") causes a Logout
// on the transition to zero.
// Previously this crashed when we asserted that c was non-nil
// here.
return
}
c.Logout()
b.mu.Lock()