From 9d119889d1843677c77c5ac8a7dc84ca2061a0b9 Mon Sep 17 00:00:00 2001 From: Sergii Pylypenko Date: Sun, 20 Jun 2021 02:53:37 +0300 Subject: [PATCH] Emscripten, removed more network hacks, Emscripten bug 12996 is fixed in Emscripten 2.0.20 --- src/network/core/os_abstraction.h | 23 ----------------------- src/network/core/tcp_listen.h | 3 --- src/network/core/udp.cpp | 3 --- src/network/network_gui.cpp | 4 ---- 4 files changed, 33 deletions(-) diff --git a/src/network/core/os_abstraction.h b/src/network/core/os_abstraction.h index aaa097786c..bde1f6bedd 100644 --- a/src/network/core/os_abstraction.h +++ b/src/network/core/os_abstraction.h @@ -166,29 +166,6 @@ typedef unsigned long in_addr_t; #endif /* OS/2 */ -#ifdef __EMSCRIPTEN__ -/** - * Emscripten doesn't set 'addrlen' for accept(), getsockname(), getpeername() - * and recvfrom(), which confuses other functions and causes them to crash. - * This function needs to be called after these four functions to make sure - * 'addrlen' is patched up. - * - * https://github.com/emscripten-core/emscripten/issues/12996 - * - * @param address The address returned by those four functions. - * @return The correct value for addrlen. - */ -static inline socklen_t FixAddrLenForEmscripten(struct sockaddr_storage &address) -{ - switch (address.ss_family) { - case AF_INET6: return sizeof(struct sockaddr_in6); - case AF_INET: return sizeof(struct sockaddr_in); - default: NOT_REACHED(); - } -} -#endif - - bool SetNonBlocking(SOCKET d); bool SetNoDelay(SOCKET d); NetworkError GetSocketError(SOCKET d); diff --git a/src/network/core/tcp_listen.h b/src/network/core/tcp_listen.h index 1bfdd3d78f..552cf9d993 100644 --- a/src/network/core/tcp_listen.h +++ b/src/network/core/tcp_listen.h @@ -42,9 +42,6 @@ public: socklen_t sin_len = sizeof(sin); SOCKET s = accept(ls, (struct sockaddr*)&sin, &sin_len); if (s == INVALID_SOCKET) return; -#ifdef __EMSCRIPTEN__ - sin_len = FixAddrLenForEmscripten(sin); -#endif SetNonBlocking(s); // XXX error handling? diff --git a/src/network/core/udp.cpp b/src/network/core/udp.cpp index 298b640c81..dd6d8700e5 100644 --- a/src/network/core/udp.cpp +++ b/src/network/core/udp.cpp @@ -130,9 +130,6 @@ void NetworkUDPSocketHandler::ReceivePackets() /* Did we get the bytes for the base header of the packet? */ if (nbytes <= 0) break; // No data, i.e. no packet if (nbytes <= 2) continue; // Invalid data; try next packet -#ifdef __EMSCRIPTEN__ - client_len = FixAddrLenForEmscripten(client_addr); -#endif NetworkAddress address(client_addr, client_len); p.PrepareToRead(); diff --git a/src/network/network_gui.cpp b/src/network/network_gui.cpp index 743fb0936b..fa744d5778 100644 --- a/src/network/network_gui.cpp +++ b/src/network/network_gui.cpp @@ -41,10 +41,6 @@ #include "../safeguards.h" -#ifdef __EMSCRIPTEN__ -# include -#endif - static void ShowNetworkStartServerWindow(); static void ShowNetworkLobbyWindow(NetworkGameList *ngl);