fix horrid lag on hb appstore

This commit is contained in:
lizzie
2026-08-31 03:28:37 +00:00
parent a28dd7cbd7
commit a08edeeeeb
+12 -36
View File
@@ -751,50 +751,30 @@ static Network::PollEvents TranslatePollRevents(s16 revents) {
} // Anonymous namespace
#ifdef _WIN32
sockaddr_in TranslateFromSockAddrIn(Network::SockAddrIn input) {
sockaddr_in result{};
#ifdef __unix__
result.sin_len = sizeof(result);
#endif
result.sin_family = AF_INET;
switch (Domain(input.family)) {
case Domain::INET:
result.sin_family = AF_INET;
break;
default:
UNIMPLEMENTED_MSG("Unhandled sockaddr family={}", input.family);
break;
}
result.sin_family = sa_family_t(TranslateDomainToNative(Domain(input.family)));
result.sin_port = input.portno; //no need to translate
#ifdef _WIN32
auto& ip = result.sin_addr.S_un.S_un_b;
ip.s_b1 = input.ip[0];
ip.s_b2 = input.ip[1];
ip.s_b3 = input.ip[2];
ip.s_b4 = input.ip[3];
return result;
}
#else
sockaddr_in TranslateFromSockAddrIn(Network::SockAddrIn input) {
sockaddr_in result{};
result.sin_family = sa_family_t(TranslateDomainToNative(Domain(input.family)));
//result.sin_len = sizeof(result);
result.sin_port = input.portno; //needs no conversion
result.sin_addr.s_addr = htonl((u32(input.ip[0]) << 24)
| (u32(input.ip[1]) << 16)
| (u32(input.ip[2]) << 8)
| (u32(input.ip[3]) << 0));
result.sin_addr.s_addr = std::bit_cast<in_addr_t>(input.ip);
#endif
return result;
}
#endif
Network::SockAddrIn TranslateToSockAddrIn(sockaddr_in input) {
Network::SockAddrIn result{};
result.len = 16;
result.family = u8(TranslateDomainFromNative(input.sin_family));
result.portno = input.sin_port; //needs no conversion
result.portno = ntohs(input.sin_port); //needs no conversion
result.ip = TranslateIPv4(input.sin_addr);
result.zeroes = {};
return result;
@@ -1127,14 +1107,9 @@ std::pair<Socket::AcceptResult, Errno> Socket::Accept() {
Errno Socket::Connect(Network::SockAddrIn addr_in) {
auto const host_addr_in = TranslateFromSockAddrIn(addr_in);
LOG_INFO(Network, "len={}, family={} - {}.{}.{}.{}:{}", addr_in.len, addr_in.family, addr_in.ip[0], addr_in.ip[1], addr_in.ip[2], addr_in.ip[3], addr_in.portno);
if (EnableNonBlock(fd, false)) {
if (connect(fd, reinterpret_cast<sockaddr const*>(&host_addr_in), sizeof(host_addr_in)) != SOCKET_ERROR) {
if (EnableNonBlock(fd, true)) {
return Errno::E_SUCCESS;
}
}
}
LOG_INFO(Network, "len={}, family={} - {}.{}.{}.{}:{}", addr_in.len, addr_in.family, addr_in.ip[0], addr_in.ip[1], addr_in.ip[2], addr_in.ip[3], ntohs(addr_in.portno));
if (connect(fd, reinterpret_cast<sockaddr const*>(&host_addr_in), sizeof(host_addr_in)) != SOCKET_ERROR)
return Errno::E_SUCCESS;
return GetAndLogLastError(CallType::Other);
}
@@ -1156,9 +1131,10 @@ std::pair<Network::SockAddrIn, Errno> Socket::GetSockName() {
return {TranslateToSockAddrIn(addr), Errno::E_SUCCESS};
}
Errno Socket::Bind(Network::SockAddrIn addr) {
auto const addr_in = TranslateFromSockAddrIn(addr);
if (bind(fd, reinterpret_cast<sockaddr const*>(&addr_in), sizeof(addr_in)) != SOCKET_ERROR)
Errno Socket::Bind(Network::SockAddrIn addr_in) {
auto const host_addr_in = TranslateFromSockAddrIn(addr_in);
LOG_INFO(Network, "len={}, family={} - {}.{}.{}.{}:{}", addr_in.len, addr_in.family, addr_in.ip[0], addr_in.ip[1], addr_in.ip[2], addr_in.ip[3], ntohs(addr_in.portno));
if (bind(fd, reinterpret_cast<sockaddr const*>(&host_addr_in), sizeof(host_addr_in)) != SOCKET_ERROR)
return Errno::E_SUCCESS;
return GetAndLogLastError(CallType::Other);
}