Skip to content

Commit e47206c

Browse files
committed
fix: review comments
1 parent fa10199 commit e47206c

1 file changed

Lines changed: 14 additions & 2 deletions

File tree

‎internal/service/tailscale_service.go‎

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ type TailscaleService struct {
3232
srv *tsnet.Server
3333
lc *local.Client
3434
ln *net.Listener
35+
mu sync.Mutex
3536
}
3637

3738
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
6061
lc, err := srv.LocalClient()
6162

6263
if err != nil {
64+
_ = srv.Close()
6365
return nil, fmt.Errorf("failed to get tailscale local client: %w", err)
6466
}
6567

@@ -78,6 +80,7 @@ func NewTailscaleService(log *logger.Logger, config model.Config, ctx context.Co
7880
err = service.waitForConn(connectCtx)
7981

8082
if err != nil {
83+
_ = srv.Close()
8184
return nil, fmt.Errorf("failed to connect to tailscale network: %w", err)
8285
}
8386

@@ -89,10 +92,16 @@ func NewTailscaleService(log *logger.Logger, config model.Config, ctx context.Co
8992
func (ts *TailscaleService) watchAndClose() {
9093
<-ts.ctx.Done()
9194
ts.log.App.Debug().Msg("Shutting down Tailscale service")
92-
if ts.ln != nil {
95+
ts.mu.Lock()
96+
srv := ts.srv
97+
ln := ts.ln
98+
ts.ln = nil
99+
ts.srv = nil
100+
ts.mu.Unlock()
101+
if ln != nil {
93102
(*ts.ln).Close()
94103
}
95-
if ts.srv != nil {
104+
if srv != nil {
96105
ts.srv.Close()
97106
}
98107
}
@@ -119,6 +128,9 @@ func (ts *TailscaleService) Whois(ctx context.Context, addr string) (*TailscaleW
119128
}
120129

121130
func (ts *TailscaleService) CreateListener() (net.Listener, error) {
131+
ts.mu.Lock()
132+
defer ts.mu.Unlock()
133+
122134
if ts.ln != nil {
123135
return *ts.ln, nil
124136
}

0 commit comments

Comments
 (0)