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(