From 252a50bb75cc54fa3b21b394de5921abe5a91af7 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Wed, 28 Apr 2021 20:37:20 -0500 Subject: [PATCH] Disable WSAECONNRESET errors for UDP sockets on Windows --- src/PlatformSockets.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/PlatformSockets.c b/src/PlatformSockets.c index e1e091c..a7da40f 100644 --- a/src/PlatformSockets.c +++ b/src/PlatformSockets.c @@ -10,6 +10,11 @@ #define TCPv6_MSS 1220 #if defined(LC_WINDOWS) + +#ifndef SIO_UDP_CONNRESET +#define SIO_UDP_CONNRESET _WSAIOW(IOC_VENDOR, 12) +#endif + static HMODULE WlanApiLibraryHandle; static HANDLE WlanHandle; @@ -246,12 +251,21 @@ SOCKET bindUdpSocket(int addrfamily, int bufferSize) { return INVALID_SOCKET; } -#ifdef LC_DARWIN +#if defined(LC_DARWIN) { // Disable SIGPIPE on iOS int val = 1; setsockopt(s, SOL_SOCKET, SO_NOSIGPIPE, (char*)&val, sizeof(val)); } +#elif defined(LC_WINDOWS) + { + // Disable WSAECONNRESET for UDP sockets on Windows + BOOL val = FALSE; + DWORD bytesReturned = 0; + if (WSAIoctl(s, SIO_UDP_CONNRESET, &val, sizeof(val), NULL, 0, &bytesReturned, NULL, NULL) != 0) { + Limelog("WSAIoctl(SIO_UDP_CONNRESET) failed: %d\n", LastSocketError()); + } + } #endif // We start at the requested recv buffer value and step down until we find