From 59cfc339b05b111cf4e0d947cda3574ca529c253 Mon Sep 17 00:00:00 2001 From: Bananymous Date: Wed, 12 Nov 2025 03:33:14 +0200 Subject: [PATCH] Kernel: Ignore MSG_NOSIGNAL and invalid flags --- kernel/kernel/Networking/TCPSocket.cpp | 4 ++++ kernel/kernel/Networking/UDPSocket.cpp | 8 ++++++-- kernel/kernel/Networking/UNIX/Socket.cpp | 4 ++++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/kernel/kernel/Networking/TCPSocket.cpp b/kernel/kernel/Networking/TCPSocket.cpp index 7fae8492..377e8ca6 100644 --- a/kernel/kernel/Networking/TCPSocket.cpp +++ b/kernel/kernel/Networking/TCPSocket.cpp @@ -192,6 +192,7 @@ namespace Kernel BAN::ErrorOr TCPSocket::recvmsg_impl(msghdr& message, int flags) { + flags &= (MSG_OOB | MSG_PEEK | MSG_WAITALL); if (flags != 0) { dwarnln("TODO: recvmsg with flags 0x{H}", flags); @@ -239,6 +240,9 @@ namespace Kernel BAN::ErrorOr TCPSocket::sendmsg_impl(const msghdr& message, int flags) { + if (flags & MSG_NOSIGNAL) + dwarnln("sendmsg ignoring MSG_NOSIGNAL"); + flags &= (MSG_EOR | MSG_OOB /* | MSG_NOSIGNAL */); if (flags != 0) { dwarnln("TODO: sendmsg with flags 0x{H}", flags); diff --git a/kernel/kernel/Networking/UDPSocket.cpp b/kernel/kernel/Networking/UDPSocket.cpp index 59ffb111..34680a37 100644 --- a/kernel/kernel/Networking/UDPSocket.cpp +++ b/kernel/kernel/Networking/UDPSocket.cpp @@ -88,6 +88,7 @@ namespace Kernel BAN::ErrorOr UDPSocket::recvmsg_impl(msghdr& message, int flags) { + flags &= (MSG_OOB | MSG_PEEK | MSG_WAITALL); if (flags != 0) { dwarnln("TODO: recvmsg with flags 0x{H}", flags); @@ -153,14 +154,17 @@ namespace Kernel BAN::ErrorOr UDPSocket::sendmsg_impl(const msghdr& message, int flags) { + if (flags & MSG_NOSIGNAL) + dwarnln("sendmsg ignoring MSG_NOSIGNAL"); + flags &= (MSG_EOR | MSG_OOB /* | MSG_NOSIGNAL */); if (flags != 0) { - dwarnln("TODO: recvmsg with flags 0x{H}", flags); + dwarnln("TODO: sendmsg with flags 0x{H}", flags); return BAN::Error::from_errno(ENOTSUP); } if (CMSG_FIRSTHDR(&message)) - dwarnln("ignoring recvmsg control message"); + dwarnln("ignoring sendmsg control message"); if (!is_bound()) TRY(m_network_layer.bind_socket_to_unused(this, static_cast(message.msg_name), message.msg_namelen)); diff --git a/kernel/kernel/Networking/UNIX/Socket.cpp b/kernel/kernel/Networking/UNIX/Socket.cpp index 3aa49a37..5953b375 100644 --- a/kernel/kernel/Networking/UNIX/Socket.cpp +++ b/kernel/kernel/Networking/UNIX/Socket.cpp @@ -361,6 +361,7 @@ namespace Kernel BAN::ErrorOr UnixDomainSocket::recvmsg_impl(msghdr& message, int flags) { + flags &= (MSG_OOB | MSG_PEEK | MSG_WAITALL); if (flags != 0) { dwarnln("TODO: recvmsg with flags 0x{H}", flags); @@ -455,6 +456,9 @@ namespace Kernel BAN::ErrorOr UnixDomainSocket::sendmsg_impl(const msghdr& message, int flags) { + if (flags & MSG_NOSIGNAL) + dwarnln("sendmsg ignoring MSG_NOSIGNAL"); + flags &= (MSG_EOR | MSG_OOB /* | MSG_NOSIGNAL */); if (flags != 0) { dwarnln("TODO: sendmsg with flags 0x{H}", flags);