diff options
| author | Edwin Mons <edwin.mons@isode.com> | 2018-11-09 08:51:10 (GMT) |
|---|---|---|
| committer | Edwin Mons <edwin.mons@isode.com> | 2018-11-09 10:05:12 (GMT) |
| commit | a45eed2d826f60a20dfd1f4f06df37d1f83263f8 (patch) | |
| tree | 7593509f9b89630ff70d5c9e1d14966435a4ab8a /Swiften | |
| parent | 644db9fce94670e610db46bdd28eb9d1e658a798 (diff) | |
| download | swift-a45eed2d826f60a20dfd1f4f06df37d1f83263f8.zip swift-a45eed2d826f60a20dfd1f4f06df37d1f83263f8.tar.bz2 | |
Store NATPortMapping lifetime as uint32_t
The NAT-PMP RFC specifies lifetime as an unsigned, 32 bit integer, so
using this internally makes sense. This also removes the need for casts
in interface code.
A slight bug in the NATPMPInterface implementation to remove a mapping
has been addressed.
Test-Information:
Unit tests pass on macOS 10.13
Change-Id: I06687fd2735a8706f339f85d6c957ad7aadaaf02
Diffstat (limited to 'Swiften')
| -rw-r--r-- | Swiften/Network/MiniUPnPInterface.cpp | 2 | ||||
| -rw-r--r-- | Swiften/Network/NATPMPInterface.cpp | 8 | ||||
| -rw-r--r-- | Swiften/Network/NATPortMapping.h | 8 |
3 files changed, 7 insertions, 11 deletions
diff --git a/Swiften/Network/MiniUPnPInterface.cpp b/Swiften/Network/MiniUPnPInterface.cpp index af3b67c..8425c77 100644 --- a/Swiften/Network/MiniUPnPInterface.cpp +++ b/Swiften/Network/MiniUPnPInterface.cpp @@ -12,12 +12,10 @@ #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> diff --git a/Swiften/Network/NATPMPInterface.cpp b/Swiften/Network/NATPMPInterface.cpp index 8ab26d4..0c33c1f 100644 --- a/Swiften/Network/NATPMPInterface.cpp +++ b/Swiften/Network/NATPMPInterface.cpp @@ -12,12 +12,10 @@ #include <Swiften/Network/NATPMPInterface.h> #include <memory> -#include <boost/numeric/conversion/cast.hpp> - #include <Swiften/Base/Log.h> // This has to be included after the previous headers, because of WIN32 macro // being defined somewhere. #include <natpmp.h> @@ -79,11 +77,11 @@ boost::optional<NATPortMapping> NATPMPInterface::addPortForward(unsigned short l if (sendnewportmappingrequest( &p->natpmp, mapping.getProtocol() == NATPortMapping::TCP ? NATPMP_PROTOCOL_TCP : NATPMP_PROTOCOL_UDP, mapping.getLocalPort(), mapping.getPublicPort(), - boost::numeric_cast<uint32_t>(mapping.getLeaseInSeconds())) < 0) { + mapping.getLeaseInSeconds()) < 0) { SWIFT_LOG(debug) << "Failed to send NAT-PMP port forwarding request!" << std::endl; return boost::optional<NATPortMapping>(); } int r = 0; @@ -102,21 +100,21 @@ boost::optional<NATPortMapping> NATPMPInterface::addPortForward(unsigned short l select(FD_SETSIZE, &fds, nullptr, nullptr, &timeout); r = readnatpmpresponseorretry(&p->natpmp, &response); } while(false /*r == NATPMP_TRYAGAIN*/); if (r == 0) { - NATPortMapping result(response.pnu.newportmapping.privateport, response.pnu.newportmapping.mappedpublicport, NATPortMapping::TCP, boost::numeric_cast<int>(response.pnu.newportmapping.lifetime)); + NATPortMapping result(response.pnu.newportmapping.privateport, response.pnu.newportmapping.mappedpublicport, NATPortMapping::TCP, response.pnu.newportmapping.lifetime); return result; } else { SWIFT_LOG(debug) << "Invalid NAT-PMP response." << std::endl; return boost::optional<NATPortMapping>(); } } bool NATPMPInterface::removePortForward(const NATPortMapping& mapping) { - if (sendnewportmappingrequest(&p->natpmp, mapping.getProtocol() == NATPortMapping::TCP ? NATPMP_PROTOCOL_TCP : NATPMP_PROTOCOL_UDP, 0, 0, boost::numeric_cast<uint32_t>(mapping.getLocalPort())) < 0) { + if (sendnewportmappingrequest(&p->natpmp, mapping.getProtocol() == NATPortMapping::TCP ? NATPMP_PROTOCOL_TCP : NATPMP_PROTOCOL_UDP, mapping.getLocalPort(), 0, 0) < 0) { SWIFT_LOG(debug) << "Failed to send NAT-PMP remove forwarding request!" << std::endl; return false; } int r = 0; diff --git a/Swiften/Network/NATPortMapping.h b/Swiften/Network/NATPortMapping.h index b68052d..bf0fb1c 100644 --- a/Swiften/Network/NATPortMapping.h +++ b/Swiften/Network/NATPortMapping.h @@ -3,11 +3,11 @@ * Licensed under the simplified BSD license. * See Documentation/Licenses/BSD-simplified.txt for more information. */ /* - * Copyright (c) 2015 Isode Limited. + * Copyright (c) 2015-2018 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ #pragma once @@ -21,11 +21,11 @@ namespace Swift { enum Protocol { TCP, UDP }; - NATPortMapping(unsigned short localPort, unsigned short publicPort, Protocol protocol = TCP, int leaseInSeconds = 60 * 60 * 24) : + NATPortMapping(unsigned short localPort, unsigned short publicPort, Protocol protocol = TCP, uint32_t leaseInSeconds = 60 * 60 * 24) : publicPort(publicPort), localPort(localPort), protocol(protocol), leaseInSeconds(leaseInSeconds) { } unsigned short getPublicPort() const { @@ -38,16 +38,16 @@ namespace Swift { Protocol getProtocol() const { return protocol; } - int getLeaseInSeconds() const { + uint32_t getLeaseInSeconds() const { return leaseInSeconds; } private: unsigned short publicPort; unsigned short localPort; Protocol protocol; - int leaseInSeconds; + uint32_t leaseInSeconds; }; } |
Swift