From b3f3697c9f2d63fe280a0954294ff9a2c56a6b71 Mon Sep 17 00:00:00 2001 From: Ian Moffett Date: Mon, 4 Aug 2025 17:54:46 -0400 Subject: kernel: socket: Refactor recv() impl Signed-off-by: Ian Moffett --- sys/kern/kern_socket.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'sys/kern') diff --git a/sys/kern/kern_socket.c b/sys/kern/kern_socket.c index 66c4533..333c72e 100644 --- a/sys/kern/kern_socket.c +++ b/sys/kern/kern_socket.c @@ -264,6 +264,7 @@ recv(int sockfd, void *buf, size_t len, int flags) struct sockbuf *sbuf; struct netbuf *netbuf; size_t head; + ssize_t retval = len; int error; /* Length cannot be zero */ @@ -283,7 +284,8 @@ recv(int sockfd, void *buf, size_t len, int flags) if (netbuf->len == 0) { sbuf->head = 0; sbuf->tail = 0; - return -EAGAIN; + retval = -EAGAIN; + goto done; } if (len > netbuf->len) { @@ -292,10 +294,10 @@ recv(int sockfd, void *buf, size_t len, int flags) head = sbuf->head; memcpy(buf, &netbuf->data[head], len); - sbuf->head = (sbuf->head + len) % NETBUF_LEN; +done: mutex_release(ksock->mtx); - return len; + return retval; } /* -- cgit v1.2.3