Kernel: Set message flags in UDP and TCP recvmsg

This commit is contained in:
Bananymous 2025-11-10 21:50:21 +02:00
parent c1e2c660bf
commit bb86520094
2 changed files with 7 additions and 0 deletions

View File

@ -214,6 +214,8 @@ namespace Kernel
TRY(Thread::current().block_or_eintr_indefinite(m_thread_blocker, &m_mutex)); TRY(Thread::current().block_or_eintr_indefinite(m_thread_blocker, &m_mutex));
} }
message.msg_flags = 0;
size_t total_recv = 0; size_t total_recv = 0;
for (int i = 0; i < message.msg_iovlen; i++) for (int i = 0; i < message.msg_iovlen; i++)
{ {

View File

@ -120,12 +120,17 @@ namespace Kernel
auto* packet_buffer = reinterpret_cast<uint8_t*>(m_packet_buffer->vaddr()); auto* packet_buffer = reinterpret_cast<uint8_t*>(m_packet_buffer->vaddr());
message.msg_flags = 0;
size_t total_recv = 0; size_t total_recv = 0;
for (int i = 0; i < message.msg_iovlen; i++) for (int i = 0; i < message.msg_iovlen; i++)
{ {
const size_t nrecv = BAN::Math::min<size_t>(message.msg_iov[i].iov_len, packet_info.packet_size - total_recv); const size_t nrecv = BAN::Math::min<size_t>(message.msg_iov[i].iov_len, packet_info.packet_size - total_recv);
memcpy(message.msg_iov[i].iov_base, packet_buffer + total_recv, nrecv); memcpy(message.msg_iov[i].iov_base, packet_buffer + total_recv, nrecv);
total_recv += nrecv; total_recv += nrecv;
if (nrecv < packet_info.packet_size)
message.msg_flags |= MSG_TRUNC;
} }
memmove( memmove(