From 6daa1643b0ecd0a47149b0751ea8cf7826467f7a Mon Sep 17 00:00:00 2001 From: Fabio Alessandrelli Date: Wed, 24 Mar 2021 12:53:43 +0100 Subject: [PATCH] [Net] Fix miniupnpc UWP build. The patch has already been upstreamed, and custom patching won't be needed during next version update. (cherry picked from commit 8d5df826cb861eb1abc75fb7cea24ee4eaa2582d) --- thirdparty/README.md | 3 +++ thirdparty/miniupnpc/miniupnpc/minissdpc.c | 10 ++++++++++ 2 files changed, 13 insertions(+) diff --git a/thirdparty/README.md b/thirdparty/README.md index 2fb41464c6..90ae4ce34c 100644 --- a/thirdparty/README.md +++ b/thirdparty/README.md @@ -298,6 +298,9 @@ The only modified file is `miniupnpcstrings.h`, which was created for Godot (it is usually autogenerated by cmake). Bump the version number for miniupnpc in that file when upgrading. +Note: The following upstream patch has been applied, remove this notice on next update. +https://github.com/miniupnp/miniupnp/commit/3a08dd4b89af2e9effa22a136bac86f2f306fd79 + ## minizip diff --git a/thirdparty/miniupnpc/miniupnpc/minissdpc.c b/thirdparty/miniupnpc/miniupnpc/minissdpc.c index 0ef7e12cfb..5d3a0fd049 100644 --- a/thirdparty/miniupnpc/miniupnpc/minissdpc.c +++ b/thirdparty/miniupnpc/miniupnpc/minissdpc.c @@ -576,7 +576,17 @@ ssdpDiscoverDevices(const char * const deviceTypes[], * in order to give this ip to setsockopt(sudp, IPPROTO_IP, IP_MULTICAST_IF) */ if(!ipv6) { DWORD ifbestidx; +#if _WIN32_WINNT >= 0x0600 // _WIN32_WINNT_VISTA + // While we don't need IPv6 support, the IPv4 only funciton is not available in UWP apps. + SOCKADDR_IN destAddr; + memset(&destAddr, 0, sizeof(destAddr)); + destAddr.sin_family = AF_INET; + destAddr.sin_addr.s_addr = inet_addr("223.255.255.255"); + destAddr.sin_port = 0; + if (GetBestInterfaceEx((struct sockaddr *)&destAddr, &ifbestidx) == NO_ERROR) { +#else if (GetBestInterface(inet_addr("223.255.255.255"), &ifbestidx) == NO_ERROR) { +#endif DWORD dwRetVal = NO_ERROR; PIP_ADAPTER_ADDRESSES pAddresses = NULL; ULONG outBufLen = 15360;