recv() on a closed TCP socket returns ENOTCONN

From RFC 793 s3.9 p58 Event Processing:

If RECEIVE Call arrives in CLOSED state and the user has access to such a
connection, the return should be "error: connection does not exist"

Fixes #1598

PiperOrigin-RevId: 293494287
This commit is contained in:
Eyal Soha
2020-02-05 17:56:42 -08:00
committed by gVisor bot
parent f2d3efca1d
commit f3d9560703
5 changed files with 25 additions and 8 deletions
+6 -1
View File
@@ -2229,11 +2229,16 @@ func (s *SocketOperations) coalescingRead(ctx context.Context, dst usermem.IOSeq
var copied int
// Copy as many views as possible into the user-provided buffer.
for dst.NumBytes() != 0 {
for {
// Always do at least one fetchReadView, even if the number of bytes to
// read is 0.
err = s.fetchReadView()
if err != nil {
break
}
if dst.NumBytes() == 0 {
break
}
var n int
var e error