diff options
Diffstat (limited to 'Swiften/Network/NATPMPInterface.cpp')
| -rw-r--r-- | Swiften/Network/NATPMPInterface.cpp | 16 | 
1 files changed, 11 insertions, 5 deletions
| diff --git a/Swiften/Network/NATPMPInterface.cpp b/Swiften/Network/NATPMPInterface.cpp index 220e3e9..c7a41ff 100644 --- a/Swiften/Network/NATPMPInterface.cpp +++ b/Swiften/Network/NATPMPInterface.cpp @@ -7,6 +7,7 @@  #include <Swiften/Network/NATPMPInterface.h>  #include <boost/smart_ptr/make_shared.hpp> +#include <boost/numeric/conversion/cast.hpp>  #include <Swiften/Base/Log.h> @@ -63,9 +64,14 @@ boost::optional<HostAddress> NATPMPInterface::getPublicIP() {  boost::optional<NATPortMapping> NATPMPInterface::addPortForward(int localPort, int publicPort) {  	NATPortMapping mapping(localPort, publicPort, NATPortMapping::TCP); -	if (sendnewportmappingrequest(&p->natpmp, mapping.getProtocol() == NATPortMapping::TCP ? NATPMP_PROTOCOL_TCP : NATPMP_PROTOCOL_UDP, mapping.getLeaseInSeconds(), mapping.getPublicPort(), mapping.getLocalPort()) < 0) { -			SWIFT_LOG(debug) << "Failed to send NAT-PMP port forwarding request!" << std::endl; -			return boost::optional<NATPortMapping>(); +	if (sendnewportmappingrequest( +				&p->natpmp, +				mapping.getProtocol() == NATPortMapping::TCP ? NATPMP_PROTOCOL_TCP : NATPMP_PROTOCOL_UDP,  +				boost::numeric_cast<uint16_t>(mapping.getLocalPort()),  +				boost::numeric_cast<uint16_t>(mapping.getPublicPort()),  +				boost::numeric_cast<uint32_t>(mapping.getLeaseInSeconds())) < 0) { +		SWIFT_LOG(debug) << "Failed to send NAT-PMP port forwarding request!" << std::endl; +		return boost::optional<NATPortMapping>();  	}  	int r = 0; @@ -81,7 +87,7 @@ boost::optional<NATPortMapping> NATPMPInterface::addPortForward(int localPort, i  	} while(r == NATPMP_TRYAGAIN);  	if (r == 0) { -		NATPortMapping result(response.pnu.newportmapping.privateport, response.pnu.newportmapping.mappedpublicport, NATPortMapping::TCP, response.pnu.newportmapping.lifetime); +		NATPortMapping result(response.pnu.newportmapping.privateport, response.pnu.newportmapping.mappedpublicport, NATPortMapping::TCP, boost::numeric_cast<int>(response.pnu.newportmapping.lifetime));  		return result;  	}  	else { @@ -91,7 +97,7 @@ boost::optional<NATPortMapping> NATPMPInterface::addPortForward(int localPort, i  }  bool NATPMPInterface::removePortForward(const NATPortMapping& mapping) { -	if (sendnewportmappingrequest(&p->natpmp, mapping.getProtocol() == NATPortMapping::TCP ? NATPMP_PROTOCOL_TCP : NATPMP_PROTOCOL_UDP, 0, 0, mapping.getLocalPort()) < 0) { +	if (sendnewportmappingrequest(&p->natpmp, mapping.getProtocol() == NATPortMapping::TCP ? NATPMP_PROTOCOL_TCP : NATPMP_PROTOCOL_UDP, 0, 0, boost::numeric_cast<uint32_t>(mapping.getLocalPort())) < 0) {  		SWIFT_LOG(debug) << "Failed to send NAT-PMP remove forwarding request!" << std::endl;  		return false;  	} | 
 Swift
 Swift