From 8e8f359b56a13976a8ab4a7b8665be3476064c39 Mon Sep 17 00:00:00 2001 From: kalaposfos13 <153381648+kalaposfos13@users.noreply.github.com> Date: Thu, 21 Aug 2025 03:36:08 +0200 Subject: [PATCH] Implement ORBIS_NET_SO_ERROR_EX in GetSocketOptions (#3365) --- src/core/libraries/network/posix_sockets.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/core/libraries/network/posix_sockets.cpp b/src/core/libraries/network/posix_sockets.cpp index a2b63d5e4..15e73e3c3 100644 --- a/src/core/libraries/network/posix_sockets.cpp +++ b/src/core/libraries/network/posix_sockets.cpp @@ -410,6 +410,18 @@ int PosixSocket::GetSocketOptions(int level, int optname, void* optval, u32* opt CASE_GETSOCKOPT_VALUE(ORBIS_NET_SO_USESIGNATURE, sockopt_so_usesignature); CASE_GETSOCKOPT_VALUE(ORBIS_NET_SO_NAME, (char)0); // writes an empty string to the output buffer + case ORBIS_NET_SO_ERROR_EX: { + socklen_t optlen_temp = *optlen; + auto retval = ConvertReturnErrorCode( + getsockopt(sock, level, SO_ERROR, (char*)optval, &optlen_temp)); + *optlen = optlen_temp; + if (retval < 0) { + s32 r = *Libraries::Kernel::__Error(); + *Libraries::Kernel::__Error() = 0; + return r; + } + return retval; + } } } else if (native_level == IPPROTO_IP) { switch (optname) {