Skip to content

Commit 0ccc7b6

Browse files
committed
fix: close reconnecting pty conn when exiting agent
Fixes https://github.com/coder/coder/actions/runs/4038282899/jobs/6942170850
1 parent 33c6260 commit 0ccc7b6

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

agent/agent.go

+11-2
Original file line numberDiff line numberDiff line change
@@ -437,6 +437,14 @@ func (a *agent) createTailnet(ctx context.Context, derpMap *tailcfg.DERPMap) (_
437437
logger.Debug(ctx, "accept pty failed", slog.Error(err))
438438
return
439439
}
440+
closed := make(chan struct{})
441+
_ = a.trackConnGoroutine(func() {
442+
select {
443+
case <-network.Closed():
444+
case <-closed:
445+
}
446+
_ = conn.Close()
447+
})
440448
// This cannot use a JSON decoder, since that can
441449
// buffer additional data that is required for the PTY.
442450
rawLen := make([]byte, 2)
@@ -455,9 +463,10 @@ func (a *agent) createTailnet(ctx context.Context, derpMap *tailcfg.DERPMap) (_
455463
if err != nil {
456464
continue
457465
}
458-
go func() {
466+
_ = a.trackConnGoroutine(func() {
467+
defer close(closed)
459468
_ = a.handleReconnectingPTY(ctx, logger, msg, conn)
460-
}()
469+
})
461470
}
462471
}); err != nil {
463472
return nil, err

0 commit comments

Comments
 (0)