@@ -268,10 +268,13 @@ func (a *agent) run(ctx context.Context) error {
268
268
269
269
scriptDone := make (chan error , 1 )
270
270
scriptStart := time .Now ()
271
- err = a .trackConnGoroutine (func () {
271
+ err : = a .trackConnGoroutine (func () {
272
272
defer close (scriptDone )
273
273
scriptDone <- a .runStartupScript (ctx , metadata .StartupScript )
274
274
})
275
+ if err != nil {
276
+ return xerrors .Errorf ("track startup script: %w" , err )
277
+ }
275
278
go func () {
276
279
var timeout <- chan time.Time
277
280
// If timeout is zero, an older version of the coder
@@ -645,24 +648,15 @@ func (a *agent) init(ctx context.Context) {
645
648
sshLogger .Info (ctx , "ssh connection ended" , slog .Error (err ))
646
649
},
647
650
Handler : func (session ssh.Session ) {
648
- err := a .trackConnGoroutine (func () {
649
- err := a .handleSSHSession (session )
650
- var exitError * exec.ExitError
651
- if xerrors .As (err , & exitError ) {
652
- a .logger .Debug (ctx , "ssh session returned" , slog .Error (exitError ))
653
- _ = session .Exit (exitError .ExitCode ())
654
- return
655
- }
656
- if err != nil {
657
- a .logger .Warn (ctx , "ssh session failed" , slog .Error (err ))
658
- // This exit code is designed to be unlikely to be confused for a legit exit code
659
- // from the process.
660
- _ = session .Exit (MagicSessionErrorCode )
661
- return
662
- }
663
- })
651
+ err := a .handleSSHSession (session )
652
+ var exitError * exec.ExitError
653
+ if xerrors .As (err , & exitError ) {
654
+ a .logger .Debug (ctx , "ssh session returned" , slog .Error (exitError ))
655
+ _ = session .Exit (exitError .ExitCode ())
656
+ return
657
+ }
664
658
if err != nil {
665
- a .logger .Warn (ctx , "track ssh session failed" , slog .Error (err ))
659
+ a .logger .Warn (ctx , "ssh session failed" , slog .Error (err ))
666
660
// This exit code is designed to be unlikely to be confused for a legit exit code
667
661
// from the process.
668
662
_ = session .Exit (MagicSessionErrorCode )
0 commit comments