mirror of
https://github.com/tailscale/tailscale.git
synced 2025-02-18 02:48:40 +00:00
ipn/ipnlocal: do not initialize peer api listeners when shutting down
Updates tailscale/corp#4824 Signed-off-by: Maisem Ali <maisem@tailscale.com>
This commit is contained in:
parent
e97209c6bf
commit
1a19aed410
@ -123,6 +123,7 @@ type LocalBackend struct {
|
|||||||
varRoot string // or empty if SetVarRoot never called
|
varRoot string // or empty if SetVarRoot never called
|
||||||
sshAtomicBool syncs.AtomicBool
|
sshAtomicBool syncs.AtomicBool
|
||||||
sshServer SSHServer // or nil
|
sshServer SSHServer // or nil
|
||||||
|
shutdownCalled bool // if Shutdown has been called
|
||||||
|
|
||||||
filterAtomic atomic.Value // of *filter.Filter
|
filterAtomic atomic.Value // of *filter.Filter
|
||||||
containsViaIPFuncAtomic atomic.Value // of func(netaddr.IP) bool
|
containsViaIPFuncAtomic atomic.Value // of func(netaddr.IP) bool
|
||||||
@ -343,6 +344,7 @@ func (b *LocalBackend) onHealthChange(sys health.Subsystem, err error) {
|
|||||||
// can no longer be used after Shutdown returns.
|
// can no longer be used after Shutdown returns.
|
||||||
func (b *LocalBackend) Shutdown() {
|
func (b *LocalBackend) Shutdown() {
|
||||||
b.mu.Lock()
|
b.mu.Lock()
|
||||||
|
b.shutdownCalled = true
|
||||||
cc := b.cc
|
cc := b.cc
|
||||||
b.closePeerAPIListenersLocked()
|
b.closePeerAPIListenersLocked()
|
||||||
b.mu.Unlock()
|
b.mu.Unlock()
|
||||||
@ -2341,6 +2343,9 @@ const peerAPIListenAsync = runtime.GOOS == "windows" || runtime.GOOS == "android
|
|||||||
func (b *LocalBackend) initPeerAPIListener() {
|
func (b *LocalBackend) initPeerAPIListener() {
|
||||||
b.mu.Lock()
|
b.mu.Lock()
|
||||||
defer b.mu.Unlock()
|
defer b.mu.Unlock()
|
||||||
|
if b.shutdownCalled {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
if b.netMap == nil {
|
if b.netMap == nil {
|
||||||
// We're called from authReconfig which checks that
|
// We're called from authReconfig which checks that
|
||||||
|
@ -1104,7 +1104,7 @@ func (fl *fakePeerAPIListener) Close() error {
|
|||||||
|
|
||||||
func (fl *fakePeerAPIListener) Accept() (net.Conn, error) {
|
func (fl *fakePeerAPIListener) Accept() (net.Conn, error) {
|
||||||
<-fl.closed
|
<-fl.closed
|
||||||
return nil, io.EOF
|
return nil, net.ErrClosed
|
||||||
}
|
}
|
||||||
|
|
||||||
func (fl *fakePeerAPIListener) Addr() net.Addr { return fl.addr }
|
func (fl *fakePeerAPIListener) Addr() net.Addr { return fl.addr }
|
||||||
|
Loading…
x
Reference in New Issue
Block a user