From bb8652009456ffeb4a2a3131fe5e94bd3656cb43 Mon Sep 17 00:00:00 2001 From: Bananymous Date: Mon, 10 Nov 2025 21:50:21 +0200 Subject: [PATCH] Kernel: Set message flags in UDP and TCP recvmsg --- kernel/kernel/Networking/TCPSocket.cpp | 2 ++ kernel/kernel/Networking/UDPSocket.cpp | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/kernel/kernel/Networking/TCPSocket.cpp b/kernel/kernel/Networking/TCPSocket.cpp index 255d36ba..7fae8492 100644 --- a/kernel/kernel/Networking/TCPSocket.cpp +++ b/kernel/kernel/Networking/TCPSocket.cpp @@ -214,6 +214,8 @@ namespace Kernel TRY(Thread::current().block_or_eintr_indefinite(m_thread_blocker, &m_mutex)); } + message.msg_flags = 0; + size_t total_recv = 0; for (int i = 0; i < message.msg_iovlen; i++) { diff --git a/kernel/kernel/Networking/UDPSocket.cpp b/kernel/kernel/Networking/UDPSocket.cpp index 93fd2d78..59ffb111 100644 --- a/kernel/kernel/Networking/UDPSocket.cpp +++ b/kernel/kernel/Networking/UDPSocket.cpp @@ -120,12 +120,17 @@ namespace Kernel auto* packet_buffer = reinterpret_cast(m_packet_buffer->vaddr()); + message.msg_flags = 0; + size_t total_recv = 0; for (int i = 0; i < message.msg_iovlen; i++) { const size_t nrecv = BAN::Math::min(message.msg_iov[i].iov_len, packet_info.packet_size - total_recv); memcpy(message.msg_iov[i].iov_base, packet_buffer + total_recv, nrecv); total_recv += nrecv; + + if (nrecv < packet_info.packet_size) + message.msg_flags |= MSG_TRUNC; } memmove(