diff --git a/ext/bin/miniupnpc/windows-x64/miniupnpc.lib b/ext/bin/miniupnpc/windows-x64/miniupnpc.lib
new file mode 100644
index 000000000..e05fefc88
Binary files /dev/null and b/ext/bin/miniupnpc/windows-x64/miniupnpc.lib differ
diff --git a/ext/bin/miniupnpc/windows-x86/miniupnpc.lib b/ext/bin/miniupnpc/windows-x86/miniupnpc.lib
new file mode 100644
index 000000000..a7fe41918
Binary files /dev/null and b/ext/bin/miniupnpc/windows-x86/miniupnpc.lib differ
diff --git a/ext/installfiles/windows/ZeroTier One.aip b/ext/installfiles/windows/ZeroTier One.aip
index ff7ee2190..617556988 100644
--- a/ext/installfiles/windows/ZeroTier One.aip
+++ b/ext/installfiles/windows/ZeroTier One.aip
@@ -23,7 +23,7 @@
-
+
@@ -87,8 +87,8 @@
-
-
+
+
diff --git a/osdep/Phy.hpp b/osdep/Phy.hpp
index 5afd715bf..2ea68b9de 100644
--- a/osdep/Phy.hpp
+++ b/osdep/Phy.hpp
@@ -781,7 +781,7 @@ public:
// Causes entry to be deleted from list in poll(), ignored elsewhere
sws.type = ZT_PHY_SOCKET_CLOSED;
- if (sws.sock >= _nfds) {
+ if ((long)sws.sock >= (long)_nfds) {
long nfds = (long)_whackSendSocket;
if ((long)_whackReceiveSocket > nfds)
nfds = (long)_whackReceiveSocket;
diff --git a/osdep/UPNPClient.cpp b/osdep/UPNPClient.cpp
index 20aa9d391..ceecb3a3a 100644
--- a/osdep/UPNPClient.cpp
+++ b/osdep/UPNPClient.cpp
@@ -40,8 +40,14 @@
#include "../node/Utils.hpp"
#include "UPNPClient.hpp"
-#include
-#include
+#ifdef __WINDOWS__
+#ifndef MINIUPNP_STATICLIB
+#define MINIUPNP_STATICLIB
+#endif
+#endif
+
+#include "../ext/bin/miniupnpc/include/miniupnpc/miniupnpc.h"
+#include "../ext/bin/miniupnpc/include/miniupnpc/upnpcommands.h"
namespace ZeroTier {
diff --git a/windows/ZeroTierOne/ZeroTierOne.vcxproj b/windows/ZeroTierOne/ZeroTierOne.vcxproj
index 554669b60..14bf7c3eb 100644
--- a/windows/ZeroTierOne/ZeroTierOne.vcxproj
+++ b/windows/ZeroTierOne/ZeroTierOne.vcxproj
@@ -47,6 +47,7 @@
+
true
@@ -61,6 +62,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -108,6 +125,7 @@
+
@@ -193,12 +211,13 @@
Level3
Disabled
true
- $(SolutionDir)\ext\bin\libcrypto\include
- NOMINMAX;ZT_TRACE;%(PreprocessorDefinitions)
+
+
+ NOMINMAX;ZT_TRACE;ZT_USE_MINIUPNPC;%(PreprocessorDefinitions)
true
- wsock32.lib;ws2_32.lib;newdev.lib;Iphlpapi.lib;Rpcrt4.lib;%(AdditionalDependencies)
+ $(SolutionDir)..\ext\bin\miniupnpc\windows-x86\miniupnpc.lib;wsock32.lib;ws2_32.lib;newdev.lib;Iphlpapi.lib;Rpcrt4.lib;%(AdditionalDependencies)
false
@@ -207,12 +226,13 @@
Level3
Disabled
true
- $(SolutionDir)\ext\bin\libcrypto\include
- NOMINMAX;ZT_TRACE;%(PreprocessorDefinitions)
+
+
+ NOMINMAX;ZT_TRACE;ZT_USE_MINIUPNPC;%(PreprocessorDefinitions)
true
- wsock32.lib;ws2_32.lib;newdev.lib;Iphlpapi.lib;Rpcrt4.lib;%(AdditionalDependencies)
+ $(SolutionDir)..\ext\bin\miniupnpc\windows-x64\miniupnpc.lib;wsock32.lib;ws2_32.lib;newdev.lib;Iphlpapi.lib;Rpcrt4.lib;%(AdditionalDependencies)
false
@@ -223,8 +243,9 @@
true
true
true
- $(SolutionDir)\ext\bin\libcrypto\include
- ZT_OFFICIAL_RELEASE;ZT_AUTO_UPDATE;ZT_SALSA20_SSE;NOMINMAX;%(PreprocessorDefinitions)
+
+
+ ZT_OFFICIAL_RELEASE;ZT_AUTO_UPDATE;ZT_SALSA20_SSE;ZT_USE_MINIUPNPC;NOMINMAX;%(PreprocessorDefinitions)
MultiThreaded
NoExtensions
true
@@ -236,7 +257,7 @@
true
true
true
- wsock32.lib;ws2_32.lib;newdev.lib;Iphlpapi.lib;Rpcrt4.lib;%(AdditionalDependencies)
+ $(SolutionDir)..\ext\bin\miniupnpc\windows-x86\miniupnpc.lib;wsock32.lib;ws2_32.lib;newdev.lib;Iphlpapi.lib;Rpcrt4.lib;%(AdditionalDependencies)
false
@@ -247,8 +268,9 @@
true
true
true
- $(SolutionDir)\ext\bin\libcrypto\include
- ZT_OFFICIAL_RELEASE;ZT_AUTO_UPDATE;ZT_SALSA20_SSE;NOMINMAX;%(PreprocessorDefinitions)
+
+
+ ZT_OFFICIAL_RELEASE;ZT_AUTO_UPDATE;ZT_SALSA20_SSE;ZT_USE_MINIUPNPC;NOMINMAX;%(PreprocessorDefinitions)
MultiThreaded
NotSet
true
@@ -260,7 +282,7 @@
true
true
true
- wsock32.lib;ws2_32.lib;newdev.lib;Iphlpapi.lib;Rpcrt4.lib;%(AdditionalDependencies)
+ $(SolutionDir)..\ext\bin\miniupnpc\windows-x64\miniupnpc.lib;wsock32.lib;ws2_32.lib;newdev.lib;Iphlpapi.lib;Rpcrt4.lib;%(AdditionalDependencies)
false
diff --git a/windows/ZeroTierOne/ZeroTierOne.vcxproj.filters b/windows/ZeroTierOne/ZeroTierOne.vcxproj.filters
index f36b5dc0e..abaa8547d 100644
--- a/windows/ZeroTierOne/ZeroTierOne.vcxproj.filters
+++ b/windows/ZeroTierOne/ZeroTierOne.vcxproj.filters
@@ -70,6 +70,15 @@
{bf604491-14c4-4a74-81a6-6105d07c5c7c}
+
+ {5939db69-ab17-47c6-97fb-185e2c678737}
+
+
+ {3666f510-b6da-47cb-8039-56441f2dac3e}
+
+
+ {1a47071e-e51b-4535-89ae-858946f03118}
+
@@ -177,6 +186,9 @@
Source Files\osdep
+
+ Source Files\osdep
+
@@ -347,6 +359,57 @@
Header Files\node
+
+ Header Files\osdep
+
+
+ Header Files\ext\bin\miniupnpc\include
+
+
+ Header Files\ext\bin\miniupnpc\include
+
+
+ Header Files\ext\bin\miniupnpc\include
+
+
+ Header Files\ext\bin\miniupnpc\include
+
+
+ Header Files\ext\bin\miniupnpc\include
+
+
+ Header Files\ext\bin\miniupnpc\include
+
+
+ Header Files\ext\bin\miniupnpc\include
+
+
+ Header Files\ext\bin\miniupnpc\include
+
+
+ Header Files\ext\bin\miniupnpc\include
+
+
+ Header Files\ext\bin\miniupnpc\include
+
+
+ Header Files\ext\bin\miniupnpc\include
+
+
+ Header Files\ext\bin\miniupnpc\include
+
+
+ Header Files\ext\bin\miniupnpc\include
+
+
+ Header Files\ext\bin\miniupnpc\include
+
+
+ Header Files\ext\bin\miniupnpc\include
+
+
+ Header Files\ext\bin\miniupnpc\include
+