summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Moffett <ian@osmora.org>2025-07-31 15:56:24 -0400
committerIan Moffett <ian@osmora.org>2025-07-31 15:56:24 -0400
commit075171e3b90115647f3e4af2664488bae64ee4ca (patch)
tree11e9e02853fd54284fb9a491254eda9961e92b64
parent740e59ea20f4ebfa80c889966daf6f7ed07c70fb (diff)
kernel: socket: Block is recv queue is empty
Signed-off-by: Ian Moffett <ian@osmora.org>
-rw-r--r--sys/kern/kern_socket.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/sys/kern/kern_socket.c b/sys/kern/kern_socket.c
index 065245b..0673353 100644
--- a/sys/kern/kern_socket.c
+++ b/sys/kern/kern_socket.c
@@ -571,7 +571,11 @@ sys_recv(struct syscall_args *scargs)
return -ENOBUFS;
}
- error = recv(sockfd, buf, len, flags);
+ do {
+ error = recv(sockfd, buf, len, flags);
+ sched_yield();
+ } while (error == -EAGAIN);
+
if (error < 0) {
pr_error("sys_recv: recv() fail (fd=%d)\n", sockfd);
return error;