From ecd23ce1a1e3e0a6b5dcd808a5eb8fbda7fb4c15 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Mon, 4 Nov 2019 13:41:36 +0100 Subject: [PATCH] IPv4: Non-blocking IPv4 sockets should return -EAGAIN in recvfrom() ...if there are no packets in the receive queue. --- Kernel/Net/IPv4Socket.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Kernel/Net/IPv4Socket.cpp b/Kernel/Net/IPv4Socket.cpp index cbfd7dea8eb..1385ae80b93 100644 --- a/Kernel/Net/IPv4Socket.cpp +++ b/Kernel/Net/IPv4Socket.cpp @@ -222,6 +222,9 @@ ssize_t IPv4Socket::recvfrom(FileDescription& description, void* buffer, size_t ReceivedPacket packet; { LOCKER(lock()); + if (m_receive_queue.is_empty() && !description.is_blocking()) + return -EAGAIN; + if (!m_receive_queue.is_empty()) { packet = m_receive_queue.take_first(); m_can_read = !m_receive_queue.is_empty();