@@ -210,13 +210,10 @@ func (a *agent) run(ctx context.Context) error {
210
210
a .closeMutex .Unlock ()
211
211
if network == nil {
212
212
a .logger .Debug (ctx , "creating tailnet" )
213
- network , err = a .createTailnet (ctx , metadata .DERPMap )
213
+ err = a .createTailnet (ctx , metadata .DERPMap )
214
214
if err != nil {
215
215
return xerrors .Errorf ("create tailnet: %w" , err )
216
216
}
217
- a .closeMutex .Lock ()
218
- a .network = network
219
- a .closeMutex .Unlock ()
220
217
} else {
221
218
// Update the DERP map!
222
219
network .SetDERPMap (metadata .DERPMap )
@@ -245,7 +242,7 @@ func (a *agent) trackConnGoroutine(fn func()) error {
245
242
return nil
246
243
}
247
244
248
- func (a * agent ) createTailnet (ctx context.Context , derpMap * tailcfg.DERPMap ) (network * tailnet. Conn , err error ) {
245
+ func (a * agent ) createTailnet (ctx context.Context , derpMap * tailcfg.DERPMap ) (err error ) {
249
246
a .closeMutex .Lock ()
250
247
if a .isClosed () {
251
248
a .closeMutex .Unlock ()
@@ -264,6 +261,9 @@ func (a *agent) createTailnet(ctx context.Context, derpMap *tailcfg.DERPMap) (ne
264
261
defer func () {
265
262
if err != nil {
266
263
network .Close ()
264
+ a .closeMutex .Lock ()
265
+ a .network = nil
266
+ a .closeMutex .Unlock ()
267
267
}
268
268
}()
269
269
a .network = network
@@ -287,7 +287,7 @@ func (a *agent) createTailnet(ctx context.Context, derpMap *tailcfg.DERPMap) (ne
287
287
go a .sshServer .HandleConn (conn )
288
288
}
289
289
}); err != nil {
290
- return nil , err
290
+ return err
291
291
}
292
292
293
293
reconnectingPTYListener , err := network .Listen ("tcp" , ":" + strconv .Itoa (codersdk .TailnetReconnectingPTYPort ))
@@ -327,7 +327,7 @@ func (a *agent) createTailnet(ctx context.Context, derpMap *tailcfg.DERPMap) (ne
327
327
go a .handleReconnectingPTY (ctx , msg , conn )
328
328
}
329
329
}); err != nil {
330
- return nil , err
330
+ return err
331
331
}
332
332
333
333
speedtestListener , err := network .Listen ("tcp" , ":" + strconv .Itoa (codersdk .TailnetSpeedtestPort ))
@@ -355,7 +355,7 @@ func (a *agent) createTailnet(ctx context.Context, derpMap *tailcfg.DERPMap) (ne
355
355
}
356
356
}
357
357
}); err != nil {
358
- return nil , err
358
+ return err
359
359
}
360
360
361
361
statisticsListener , err := network .Listen ("tcp" , ":" + strconv .Itoa (codersdk .TailnetStatisticsPort ))
@@ -386,7 +386,7 @@ func (a *agent) createTailnet(ctx context.Context, derpMap *tailcfg.DERPMap) (ne
386
386
a .logger .Critical (ctx , "serve statistics HTTP server" , slog .Error (err ))
387
387
}
388
388
}); err != nil {
389
- return nil , err
389
+ return err
390
390
}
391
391
392
392
return network , nil
0 commit comments