mirror of
https://github.com/tailscale/tailscale.git
synced 2026-05-05 20:26:47 +02:00
ssh/tailssh: use WaitGroup.Go for I/O copy goroutines
Replace wg.Add(1) + go func() { defer wg.Done(); ... }() with
wg.Go(func() { ... }), matching the existing pattern used in the
test code. Available since Go 1.24.
Suggested-by: Ox Cart <ox@tailscale.com> (PR #18331 review)
Updates #18256
Change-Id: Ia6d6fb22887fd9a662c01dd4f5cea521b87b063c
Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com>
This commit is contained in:
parent
d8abcce89b
commit
5e2e75a007
@ -1081,19 +1081,15 @@ func (ss *sshSession) run() {
|
||||
// Start goroutines to copy stdin/stdout/stderr.
|
||||
var wg sync.WaitGroup
|
||||
|
||||
wg.Add(1)
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
wg.Go(func() {
|
||||
defer ss.wrStdin.Close()
|
||||
if _, err := io.Copy(rec.writer("i", ss.wrStdin), ss); err != nil {
|
||||
logf("stdin copy: %v", err)
|
||||
ss.cancelCtx(err)
|
||||
}
|
||||
}()
|
||||
})
|
||||
|
||||
wg.Add(1)
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
wg.Go(func() {
|
||||
defer ss.rdStdout.Close()
|
||||
if _, err := io.Copy(rec.writer("o", ss), ss.rdStdout); err != nil && !errors.Is(err, io.EOF) {
|
||||
logf("stdout copy: %v", err)
|
||||
@ -1103,18 +1099,16 @@ func (ss *sshSession) run() {
|
||||
// more data will be sent. The channel remains open for exit-status.
|
||||
// https://datatracker.ietf.org/doc/html/rfc4254#section-5.3
|
||||
ss.CloseWrite()
|
||||
}()
|
||||
})
|
||||
|
||||
// rdStderr is nil for ptys.
|
||||
if ss.rdStderr != nil {
|
||||
wg.Add(1)
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
wg.Go(func() {
|
||||
defer ss.rdStderr.Close()
|
||||
if _, err := io.Copy(ss.Stderr(), ss.rdStderr); err != nil {
|
||||
logf("stderr copy: %v", err)
|
||||
}
|
||||
}()
|
||||
})
|
||||
}
|
||||
|
||||
err = ss.cmd.Wait()
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user