diff --git a/src/core/libraries/network/net.cpp b/src/core/libraries/network/net.cpp index 827780db9..15493a327 100644 --- a/src/core/libraries/network/net.cpp +++ b/src/core/libraries/network/net.cpp @@ -971,7 +971,11 @@ int PS4_SYSV_ABI sceNetResolverStartAton(int rid, const u32* addr, char* hostnam LOG_ERROR(Lib_Net, "rid = {} , hostname_len ={} timeout={} retry={} flags={}", rid, hostname_len, timeout, retry, flags); struct hostent* resolved = gethostbyaddr((const char*)addr, hostname_len, AF_INET); - strcpy(hostname, resolved->h_name); + if (resolved != nullptr) { + strcpy(hostname, resolved->h_name); + } else { + strcpy(hostname, "localhost"); // dummy + } return ORBIS_OK; } diff --git a/src/core/libraries/network/posix_sockets.cpp b/src/core/libraries/network/posix_sockets.cpp index 2f8d59098..3ca4bafc7 100644 --- a/src/core/libraries/network/posix_sockets.cpp +++ b/src/core/libraries/network/posix_sockets.cpp @@ -65,6 +65,13 @@ int PosixSocket::SetSocketOptions(int level, int optname, const void* optval, un } } } + if (level == IPPROTO_TCP) { + switch (optname) { + case ORBIS_NET_TCP_NODELAY: + return ConvertReturnErrorCode( + setsockopt(sock, level, TCP_NODELAY, (const char*)optval, optlen)); + } + } UNREACHABLE_MSG("Unknown level ={} optname ={}", level, optname); return 0; }