diff options
Diffstat (limited to 'Swiften/Network/MiniUPnPInterface.cpp')
-rw-r--r-- | Swiften/Network/MiniUPnPInterface.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/Swiften/Network/MiniUPnPInterface.cpp b/Swiften/Network/MiniUPnPInterface.cpp index 9006ceb..d63b69e 100644 --- a/Swiften/Network/MiniUPnPInterface.cpp +++ b/Swiften/Network/MiniUPnPInterface.cpp @@ -8,61 +8,61 @@ * Copyright (c) 2015-2016 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ #include <Swiften/Network/MiniUPnPInterface.h> #include <memory> #include <boost/lexical_cast.hpp> #include <miniupnpc.h> #include <upnpcommands.h> #include <upnperrors.h> #include <Swiften/Base/Log.h> namespace Swift { struct MiniUPnPInterface::Private { bool isValid; std::string localAddress; UPNPDev* deviceList; UPNPUrls urls; IGDdatas data; }; MiniUPnPInterface::MiniUPnPInterface() : p(new Private()) { p->isValid = false; int error = 0; -#if MINIUPNPC_API_VERSION > 14 +#if MINIUPNPC_API_VERSION > 13 p->deviceList = upnpDiscover(1500 /* timeout in ms */, nullptr, nullptr, 0, 0 /* do IPv6? */, 2 /* default TTL */, &error); #else p->deviceList = upnpDiscover(1500 /* timeout in ms */, nullptr, nullptr, 0, 0 /* do IPv6? */, &error); #endif if (!p->deviceList) { return; } char lanAddress[64]; if (!UPNP_GetValidIGD(p->deviceList, &p->urls, &p->data, lanAddress, sizeof(lanAddress))) { return; } p->localAddress = std::string(lanAddress); p->isValid = true; } MiniUPnPInterface::~MiniUPnPInterface() { if (p->isValid) { FreeUPNPUrls(&p->urls); } freeUPNPDevlist(p->deviceList); } boost::optional<HostAddress> MiniUPnPInterface::getPublicIP() { if (!p->isValid) { return boost::optional<HostAddress>(); } char externalIPAddress[40]; int ret = UPNP_GetExternalIPAddress(p->urls.controlURL, p->data.first.servicetype, externalIPAddress); if (ret != UPNPCOMMAND_SUCCESS) { |