Fix tailscale endpoint early-start close panic

This commit is contained in:
世界 2026-04-19 21:15:54 +08:00
parent 3a236d9c3c
commit a80ef94f09
No known key found for this signature in database
GPG key ID: CD109927C34A63C4

View file

@ -110,6 +110,7 @@ type Endpoint struct {
systemInterface bool
systemInterfaceName string
systemInterfaceMTU uint32
serverStarted bool
systemTun tun.Tun
systemDialer *dialer.DefaultDialer
fallbackTCPCloser func()
@ -365,6 +366,7 @@ func (t *Endpoint) postStart() error {
}
return err
}
t.serverStarted = true
if t.fallbackTCPCloser == nil {
t.fallbackTCPCloser = t.server.RegisterFallbackTCPHandler(func(src, dst netip.AddrPort) (handler func(net.Conn), intercept bool) {
return func(conn net.Conn) {
@ -482,7 +484,11 @@ func (t *Endpoint) watchState() {
}
func (t *Endpoint) Close() error {
err := common.Close(common.PtrOrNil(t.server))
var err error
if t.serverStarted {
err = common.Close(common.PtrOrNil(t.server))
t.serverStarted = false
}
netmon.RegisterInterfaceGetter(nil)
netns.SetControlFunc(nil)
if t.fallbackTCPCloser != nil {