mirror of https://github.com/docker/cli.git
Merge pull request #4394 from laurazard/fix-flaky-ssh
commandconn: return original error while closing
This commit is contained in:
commit
dc2eb3bf7c
|
@ -163,9 +163,8 @@ func (c *commandConn) Read(p []byte) (int, error) {
|
||||||
// Close might get called
|
// Close might get called
|
||||||
if c.closing.Load() {
|
if c.closing.Load() {
|
||||||
// If we're currently closing the connection
|
// If we're currently closing the connection
|
||||||
// we don't want to call onEOF, but we do want
|
// we don't want to call onEOF
|
||||||
// to return an io.EOF
|
return n, err
|
||||||
return 0, io.EOF
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return n, c.handleEOF(err)
|
return n, c.handleEOF(err)
|
||||||
|
@ -178,9 +177,8 @@ func (c *commandConn) Write(p []byte) (int, error) {
|
||||||
// Close might get called
|
// Close might get called
|
||||||
if c.closing.Load() {
|
if c.closing.Load() {
|
||||||
// If we're currently closing the connection
|
// If we're currently closing the connection
|
||||||
// we don't want to call onEOF, but we do want
|
// we don't want to call onEOF
|
||||||
// to return an io.EOF
|
return n, err
|
||||||
return 0, io.EOF
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return n, c.handleEOF(err)
|
return n, c.handleEOF(err)
|
||||||
|
|
|
@ -5,6 +5,7 @@ package commandconn
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"io"
|
"io"
|
||||||
|
"io/fs"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
@ -178,7 +179,8 @@ func TestCloseWhileWriting(t *testing.T) {
|
||||||
assert.Check(t, !process.Alive(cmdConn.cmd.Process.Pid))
|
assert.Check(t, !process.Alive(cmdConn.cmd.Process.Pid))
|
||||||
|
|
||||||
writeErr := <-writeErrC
|
writeErr := <-writeErrC
|
||||||
assert.ErrorContains(t, writeErr, "EOF")
|
assert.ErrorContains(t, writeErr, "file already closed")
|
||||||
|
assert.Check(t, is.ErrorIs(writeErr, fs.ErrClosed))
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestCloseWhileReading(t *testing.T) {
|
func TestCloseWhileReading(t *testing.T) {
|
||||||
|
@ -208,5 +210,5 @@ func TestCloseWhileReading(t *testing.T) {
|
||||||
assert.Check(t, !process.Alive(cmdConn.cmd.Process.Pid))
|
assert.Check(t, !process.Alive(cmdConn.cmd.Process.Pid))
|
||||||
|
|
||||||
readErr := <-readErrC
|
readErr := <-readErrC
|
||||||
assert.ErrorContains(t, readErr, "EOF")
|
assert.Check(t, is.ErrorIs(readErr, fs.ErrClosed))
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue