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 | |
| 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
| -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 | |||
| @@ -14,8 +14,6 @@ | |||
| 14 | 14 | ||
| 15 | #include <memory> | 15 | #include <memory> |
| 16 | 16 | ||
| 17 | #include <boost/lexical_cast.hpp> | ||
| 18 | |||
| 19 | #include <miniupnpc.h> | 17 | #include <miniupnpc.h> |
| 20 | #include <upnpcommands.h> | 18 | #include <upnpcommands.h> |
| 21 | #include <upnperrors.h> | 19 | #include <upnperrors.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 | |||
| @@ -14,8 +14,6 @@ | |||
| 14 | 14 | ||
| 15 | #include <memory> | 15 | #include <memory> |
| 16 | 16 | ||
| 17 | #include <boost/numeric/conversion/cast.hpp> | ||
| 18 | |||
| 19 | #include <Swiften/Base/Log.h> | 17 | #include <Swiften/Base/Log.h> |
| 20 | 18 | ||
| 21 | // This has to be included after the previous headers, because of WIN32 macro | 19 | // This has to be included after the previous headers, because of WIN32 macro |
| @@ -81,7 +79,7 @@ boost::optional<NATPortMapping> NATPMPInterface::addPortForward(unsigned short l | |||
| 81 | mapping.getProtocol() == NATPortMapping::TCP ? NATPMP_PROTOCOL_TCP : NATPMP_PROTOCOL_UDP, | 79 | mapping.getProtocol() == NATPortMapping::TCP ? NATPMP_PROTOCOL_TCP : NATPMP_PROTOCOL_UDP, |
| 82 | mapping.getLocalPort(), | 80 | mapping.getLocalPort(), |
| 83 | mapping.getPublicPort(), | 81 | mapping.getPublicPort(), |
| 84 | boost::numeric_cast<uint32_t>(mapping.getLeaseInSeconds())) < 0) { | 82 | mapping.getLeaseInSeconds()) < 0) { |
| 85 | SWIFT_LOG(debug) << "Failed to send NAT-PMP port forwarding request!" << std::endl; | 83 | SWIFT_LOG(debug) << "Failed to send NAT-PMP port forwarding request!" << std::endl; |
| 86 | return boost::optional<NATPortMapping>(); | 84 | return boost::optional<NATPortMapping>(); |
| 87 | } | 85 | } |
| @@ -104,7 +102,7 @@ boost::optional<NATPortMapping> NATPMPInterface::addPortForward(unsigned short l | |||
| 104 | } while(false /*r == NATPMP_TRYAGAIN*/); | 102 | } while(false /*r == NATPMP_TRYAGAIN*/); |
| 105 | 103 | ||
| 106 | if (r == 0) { | 104 | if (r == 0) { |
| 107 | NATPortMapping result(response.pnu.newportmapping.privateport, response.pnu.newportmapping.mappedpublicport, NATPortMapping::TCP, boost::numeric_cast<int>(response.pnu.newportmapping.lifetime)); | 105 | NATPortMapping result(response.pnu.newportmapping.privateport, response.pnu.newportmapping.mappedpublicport, NATPortMapping::TCP, response.pnu.newportmapping.lifetime); |
| 108 | return result; | 106 | return result; |
| 109 | } | 107 | } |
| 110 | else { | 108 | else { |
| @@ -114,7 +112,7 @@ boost::optional<NATPortMapping> NATPMPInterface::addPortForward(unsigned short l | |||
| 114 | } | 112 | } |
| 115 | 113 | ||
| 116 | bool NATPMPInterface::removePortForward(const NATPortMapping& mapping) { | 114 | bool NATPMPInterface::removePortForward(const NATPortMapping& mapping) { |
| 117 | if (sendnewportmappingrequest(&p->natpmp, mapping.getProtocol() == NATPortMapping::TCP ? NATPMP_PROTOCOL_TCP : NATPMP_PROTOCOL_UDP, 0, 0, boost::numeric_cast<uint32_t>(mapping.getLocalPort())) < 0) { | 115 | if (sendnewportmappingrequest(&p->natpmp, mapping.getProtocol() == NATPortMapping::TCP ? NATPMP_PROTOCOL_TCP : NATPMP_PROTOCOL_UDP, mapping.getLocalPort(), 0, 0) < 0) { |
| 118 | SWIFT_LOG(debug) << "Failed to send NAT-PMP remove forwarding request!" << std::endl; | 116 | SWIFT_LOG(debug) << "Failed to send NAT-PMP remove forwarding request!" << std::endl; |
| 119 | return false; | 117 | return false; |
| 120 | } | 118 | } |
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 | |||
| @@ -5,7 +5,7 @@ | |||
| 5 | */ | 5 | */ |
| 6 | 6 | ||
| 7 | /* | 7 | /* |
| 8 | * Copyright (c) 2015 Isode Limited. | 8 | * Copyright (c) 2015-2018 Isode Limited. |
| 9 | * All rights reserved. | 9 | * All rights reserved. |
| 10 | * See the COPYING file for more information. | 10 | * See the COPYING file for more information. |
| 11 | */ | 11 | */ |
| @@ -23,7 +23,7 @@ namespace Swift { | |||
| 23 | UDP | 23 | UDP |
| 24 | }; | 24 | }; |
| 25 | 25 | ||
| 26 | NATPortMapping(unsigned short localPort, unsigned short publicPort, Protocol protocol = TCP, int leaseInSeconds = 60 * 60 * 24) : | 26 | NATPortMapping(unsigned short localPort, unsigned short publicPort, Protocol protocol = TCP, uint32_t leaseInSeconds = 60 * 60 * 24) : |
| 27 | publicPort(publicPort), localPort(localPort), protocol(protocol), leaseInSeconds(leaseInSeconds) { | 27 | publicPort(publicPort), localPort(localPort), protocol(protocol), leaseInSeconds(leaseInSeconds) { |
| 28 | 28 | ||
| 29 | } | 29 | } |
| @@ -40,7 +40,7 @@ namespace Swift { | |||
| 40 | return protocol; | 40 | return protocol; |
| 41 | } | 41 | } |
| 42 | 42 | ||
| 43 | int getLeaseInSeconds() const { | 43 | uint32_t getLeaseInSeconds() const { |
| 44 | return leaseInSeconds; | 44 | return leaseInSeconds; |
| 45 | } | 45 | } |
| 46 | 46 | ||
| @@ -48,6 +48,6 @@ namespace Swift { | |||
| 48 | unsigned short publicPort; | 48 | unsigned short publicPort; |
| 49 | unsigned short localPort; | 49 | unsigned short localPort; |
| 50 | Protocol protocol; | 50 | Protocol protocol; |
| 51 | int leaseInSeconds; | 51 | uint32_t leaseInSeconds; |
| 52 | }; | 52 | }; |
| 53 | } | 53 | } |
Swift