[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <1540841488-22023-1-git-send-email-john.fastabend@gmail.com>
Date: Mon, 29 Oct 2018 12:31:28 -0700
From: John Fastabend <john.fastabend@...il.com>
To: daniel@...earbox.net, ast@...nel.org
Cc: john.fastabend@...il.com, netdev@...r.kernel.org
Subject: [PATCH] bpf: tcp_bpf_recvmsg should return EAGAIN when nonblocking and no data
We return 0 in the case of a nonblocking socket that has no data
available. However, this is incorrect and may confuse applications.
After this patch we do the correct thing and return the error
EAGAIN.
Quoting return codes from recvmsg manpage,
EAGAIN or EWOULDBLOCK
The socket is marked nonblocking and the receive operation would
block, or a receive timeout had been set and the timeout expired
before data was received.
Signed-off-by: John Fastabend <john.fastabend@...il.com>
---
net/ipv4/tcp_bpf.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/net/ipv4/tcp_bpf.c b/net/ipv4/tcp_bpf.c
index b7918d4..3b45fe5 100644
--- a/net/ipv4/tcp_bpf.c
+++ b/net/ipv4/tcp_bpf.c
@@ -145,6 +145,7 @@ int tcp_bpf_recvmsg(struct sock *sk, struct msghdr *msg, size_t len,
ret = err;
goto out;
}
+ copied = -EAGAIN;
}
ret = copied;
out:
--
1.9.1
Powered by blists - more mailing lists