mirror of
https://github.com/golang/go.git
synced 2025-11-10 05:31:03 +00:00
net: fix inconsistent error values on Read
This change fixes inconsistent error values on Read,
ReadFrom{,UDP,IP,Unix} and ReadMsg{UDP,IP,Unix}.
Updates #4856.
Change-Id: I7de5663094e09be2d78cdb18ce6f1e7ec260888d
Reviewed-on: https://go-review.googlesource.com/8992
Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
parent
951f74c4d0
commit
ec1144423f
17 changed files with 139 additions and 49 deletions
|
|
@ -138,16 +138,28 @@ func TestReadTimeout(t *testing.T) {
|
|||
if _, err = c.Read(buf); !isTimeoutError(err) {
|
||||
t.Fatalf("Read: expected err %v, got %v", errTimeout, err)
|
||||
}
|
||||
if perr := parseReadError(err); perr != nil {
|
||||
t.Error(perr)
|
||||
}
|
||||
if _, err = c.Read(buf); !isTimeoutError(err) {
|
||||
t.Fatalf("Read: expected err %v, got %v", errTimeout, err)
|
||||
}
|
||||
if perr := parseReadError(err); perr != nil {
|
||||
t.Error(perr)
|
||||
}
|
||||
c.SetDeadline(time.Now().Add(100 * time.Millisecond))
|
||||
if _, err = c.Read(buf); !isTimeoutError(err) {
|
||||
t.Fatalf("Read: expected err %v, got %v", errTimeout, err)
|
||||
}
|
||||
if perr := parseReadError(err); perr != nil {
|
||||
t.Error(perr)
|
||||
}
|
||||
if _, err = c.Read(buf); !isTimeoutError(err) {
|
||||
t.Fatalf("Read: expected err %v, got %v", errTimeout, err)
|
||||
}
|
||||
if perr := parseReadError(err); perr != nil {
|
||||
t.Error(perr)
|
||||
}
|
||||
c.SetReadDeadline(noDeadline)
|
||||
c.SetWriteDeadline(time.Now().Add(-1 * time.Second))
|
||||
errc := make(chan error)
|
||||
|
|
@ -164,15 +176,15 @@ func TestReadTimeout(t *testing.T) {
|
|||
c.Close()
|
||||
switch nerr := <-errc; err := nerr.(type) {
|
||||
case *OpError:
|
||||
if err.Err != errClosing {
|
||||
t.Fatalf("Read: expected err %v, got %v", errClosing, err)
|
||||
if perr := parseReadError(err); perr != nil {
|
||||
t.Error(perr)
|
||||
}
|
||||
default:
|
||||
if err == io.EOF && runtime.GOOS == "nacl" { // close enough; golang.org/issue/8044
|
||||
break
|
||||
}
|
||||
if err != errClosing {
|
||||
t.Fatalf("Read: expected err %v, got %v", errClosing, err)
|
||||
if perr := parseReadError(err); perr != nil {
|
||||
t.Error(perr)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -618,6 +630,9 @@ func TestReadDeadlineDataAvailable(t *testing.T) {
|
|||
c.SetReadDeadline(time.Now().Add(-5 * time.Second)) // in the psat.
|
||||
buf := make([]byte, len(msg)/2)
|
||||
n, err := c.Read(buf)
|
||||
if perr := parseReadError(err); perr != nil {
|
||||
t.Error(perr)
|
||||
}
|
||||
if n > 0 || !isTimeoutError(err) {
|
||||
t.Fatalf("client read = %d (%q) err=%v; want 0, timeout", n, buf[:n], err)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue