fix: review comments

This commit is contained in:
Stavros
2026-05-19 19:07:25 +03:00
parent fa10199f4b
commit e47206c18d
+14 -2
View File
@@ -32,6 +32,7 @@ type TailscaleService struct {
srv *tsnet.Server srv *tsnet.Server
lc *local.Client lc *local.Client
ln *net.Listener ln *net.Listener
mu sync.Mutex
} }
func NewTailscaleService(log *logger.Logger, config model.Config, ctx context.Context, wg *sync.WaitGroup) (*TailscaleService, error) { func NewTailscaleService(log *logger.Logger, config model.Config, ctx context.Context, wg *sync.WaitGroup) (*TailscaleService, error) {
@@ -60,6 +61,7 @@ func NewTailscaleService(log *logger.Logger, config model.Config, ctx context.Co
lc, err := srv.LocalClient() lc, err := srv.LocalClient()
if err != nil { if err != nil {
_ = srv.Close()
return nil, fmt.Errorf("failed to get tailscale local client: %w", err) return nil, fmt.Errorf("failed to get tailscale local client: %w", err)
} }
@@ -78,6 +80,7 @@ func NewTailscaleService(log *logger.Logger, config model.Config, ctx context.Co
err = service.waitForConn(connectCtx) err = service.waitForConn(connectCtx)
if err != nil { if err != nil {
_ = srv.Close()
return nil, fmt.Errorf("failed to connect to tailscale network: %w", err) return nil, fmt.Errorf("failed to connect to tailscale network: %w", err)
} }
@@ -89,10 +92,16 @@ func NewTailscaleService(log *logger.Logger, config model.Config, ctx context.Co
func (ts *TailscaleService) watchAndClose() { func (ts *TailscaleService) watchAndClose() {
<-ts.ctx.Done() <-ts.ctx.Done()
ts.log.App.Debug().Msg("Shutting down Tailscale service") ts.log.App.Debug().Msg("Shutting down Tailscale service")
if ts.ln != nil { ts.mu.Lock()
srv := ts.srv
ln := ts.ln
ts.ln = nil
ts.srv = nil
ts.mu.Unlock()
if ln != nil {
(*ts.ln).Close() (*ts.ln).Close()
} }
if ts.srv != nil { if srv != nil {
ts.srv.Close() ts.srv.Close()
} }
} }
@@ -119,6 +128,9 @@ func (ts *TailscaleService) Whois(ctx context.Context, addr string) (*TailscaleW
} }
func (ts *TailscaleService) CreateListener() (net.Listener, error) { func (ts *TailscaleService) CreateListener() (net.Listener, error) {
ts.mu.Lock()
defer ts.mu.Unlock()
if ts.ln != nil { if ts.ln != nil {
return *ts.ln, nil return *ts.ln, nil
} }