net: don't return io.EOF on reading data from datagram, raw sockets on windows
Preventing returning io.EOF on non-connection oriented sockets is
already applied to Unix variants. This CL applies it to Windows.
Update #4856.
Change-Id: I82071d40f617e2962d0540b9d1d6a10ea4cdb2ec
Reviewed-on: https://go-review.googlesource.com/2203
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Alex Brainman <alex.brainman@gmail.com>
diff --git a/src/net/fd_unix.go b/src/net/fd_unix.go
index 7fa43f6..4e3269b 100644
--- a/src/net/fd_unix.go
+++ b/src/net/fd_unix.go
@@ -244,7 +244,7 @@
}
}
}
- err = chkReadErr(n, err, fd)
+ err = fd.eofError(n, err)
break
}
if err != nil && err != io.EOF {
@@ -271,7 +271,7 @@
}
}
}
- err = chkReadErr(n, err, fd)
+ err = fd.eofError(n, err)
break
}
if err != nil && err != io.EOF {
@@ -298,7 +298,7 @@
}
}
}
- err = chkReadErr(n, err, fd)
+ err = fd.eofError(n, err)
break
}
if err != nil && err != io.EOF {
@@ -307,13 +307,6 @@
return
}
-func chkReadErr(n int, err error, fd *netFD) error {
- if n == 0 && err == nil && fd.sotype != syscall.SOCK_DGRAM && fd.sotype != syscall.SOCK_RAW {
- return io.EOF
- }
- return err
-}
-
func (fd *netFD) Write(p []byte) (nn int, err error) {
if err := fd.writeLock(); err != nil {
return 0, err