From 8d5df826cb861eb1abc75fb7cea24ee4eaa2582d 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. --- 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 b05f074bd63..6dca29e856d 100644 --- a/thirdparty/README.md +++ b/thirdparty/README.md @@ -370,6 +370,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 0ef7e12cfbb..5d3a0fd049c 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;