From 314d37155a4d521452268731a0cbcf790deb38ae Mon Sep 17 00:00:00 2001 From: nmzik Date: Sun, 6 Sep 2026 04:51:07 +0400 Subject: [PATCH] net: add TCP_NODELAY and translate socket errors --- src/libs/libNet.cpp | 2 +- src/libs/network.cpp | 15 ++++++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/libs/libNet.cpp b/src/libs/libNet.cpp index 2bd7150c0..f88b51eb9 100644 --- a/src/libs/libNet.cpp +++ b/src/libs/libNet.cpp @@ -168,7 +168,7 @@ int KYTY_SYSV_ABI NetSocketClose(int s) { int KYTY_SYSV_ABI NetSetsockopt(int s, int level, int optname, const void* optval, uint32_t optlen) { - return NET_CALL(Net::Setsockopt(s, level, optname, optval, optlen)); + return FinishSocketCall(Net::Setsockopt(s, level, optname, optval, optlen)); } uint32_t KYTY_SYSV_ABI NetHtonl(uint32_t host32) { diff --git a/src/libs/network.cpp b/src/libs/network.cpp index c52e8329f..cfc9ee822 100644 --- a/src/libs/network.cpp +++ b/src/libs/network.cpp @@ -14,6 +14,7 @@ #endif #else #include +#include #include #include #endif @@ -1901,17 +1902,21 @@ int KYTY_SYSV_ABI Setsockopt(int s, int level, int optname, const void* optval, } return 0; } +#else + // Guest TCP options: IPPROTO_TCP=6, TCP_NODELAY=1. + if (level != 6 || optname != 1) { + return SetGuestSocketError(Posix::POSIX_ENOPROTOOPT); + } + level = IPPROTO_TCP; + optname = TCP_NODELAY; +#endif if (::setsockopt(socket, ConvertSocketOptionLevel(level), optname, - static_cast(optval), static_cast(optlen)) == SOCKET_ERROR) { + static_cast(optval), static_cast(optlen)) != 0) { return SetHostSocketError(); } return 0; -#else - *Posix::GetErrorAddr() = Posix::POSIX_ENOSYS; - return -1; -#endif } int64_t KYTY_SYSV_ABI Send(int s, const void* buf, uint64_t len, int flags) {