summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEdwin Mons <edwin.mons@isode.com>2018-10-29 16:28:14 (GMT)
committerEdwin Mons <edwin.mons@isode.com>2018-11-08 11:31:20 (GMT)
commitcf3d517763a3d74a2ec9fd6f7bdee8cbaee3550f (patch)
tree69e11e13ff2e5127d2cbfcc164be761cf104a1b2 /Swiften/Parser/PayloadParsers
parent5ce9e19ef0744f530a797c30a82e9723eb7ea306 (diff)
downloadswift-cf3d517763a3d74a2ec9fd6f7bdee8cbaee3550f.zip
swift-cf3d517763a3d74a2ec9fd6f7bdee8cbaee3550f.tar.bz2
Consistently use unsigned short for network ports
Network ports are now consistently stored as unsigned shorts, apart from the options and user interface, where -1 is still used to denote the use of default ports. Test-Information: Unit tests pass on macOS 10.13 and Debian 9 On macOS: tested the UI with various proxy and manual ports, behaviour as expected. Change-Id: I7a65f40083022887aa30ed7b21eadc56d0c52be1
Diffstat (limited to 'Swiften/Parser/PayloadParsers')
-rw-r--r--Swiften/Parser/PayloadParsers/BytestreamsParser.cpp7
-rw-r--r--Swiften/Parser/PayloadParsers/JingleS5BTransportMethodPayloadParser.cpp9
-rw-r--r--Swiften/Parser/PayloadParsers/S5BProxyRequestParser.cpp12
3 files changed, 16 insertions, 12 deletions
diff --git a/Swiften/Parser/PayloadParsers/BytestreamsParser.cpp b/Swiften/Parser/PayloadParsers/BytestreamsParser.cpp
index 405c593..71bce54 100644
--- a/Swiften/Parser/PayloadParsers/BytestreamsParser.cpp
+++ b/Swiften/Parser/PayloadParsers/BytestreamsParser.cpp
@@ -1,5 +1,5 @@
1/* 1/*
2 * Copyright (c) 2010-2016 Isode Limited. 2 * Copyright (c) 2010-2018 Isode Limited.
3 * All rights reserved. 3 * All rights reserved.
4 * See the COPYING file for more information. 4 * See the COPYING file for more information.
5 */ 5 */
@@ -7,6 +7,7 @@
7#include <Swiften/Parser/PayloadParsers/BytestreamsParser.h> 7#include <Swiften/Parser/PayloadParsers/BytestreamsParser.h>
8 8
9#include <boost/lexical_cast.hpp> 9#include <boost/lexical_cast.hpp>
10#include <boost/numeric/conversion/cast.hpp>
10 11
11namespace Swift { 12namespace Swift {
12 13
@@ -23,7 +24,9 @@ void BytestreamsParser::handleStartElement(const std::string& element, const std
23 else if (level == PayloadLevel) { 24 else if (level == PayloadLevel) {
24 if (element == "streamhost") { 25 if (element == "streamhost") {
25 try { 26 try {
26 getPayloadInternal()->addStreamHost(Bytestreams::StreamHost(attributes.getAttribute("host"), JID(attributes.getAttribute("jid")), boost::lexical_cast<int>(attributes.getAttribute("port")))); 27 getPayloadInternal()->addStreamHost(Bytestreams::StreamHost(attributes.getAttribute("host"), JID(attributes.getAttribute("jid")), boost::numeric_cast<unsigned short>(boost::lexical_cast<int>(attributes.getAttribute("port")))));
28 }
29 catch (boost::numeric::bad_numeric_cast&) {
27 } 30 }
28 catch (boost::bad_lexical_cast&) { 31 catch (boost::bad_lexical_cast&) {
29 } 32 }
diff --git a/Swiften/Parser/PayloadParsers/JingleS5BTransportMethodPayloadParser.cpp b/Swiften/Parser/PayloadParsers/JingleS5BTransportMethodPayloadParser.cpp
index e639e20..a405e0e 100644
--- a/Swiften/Parser/PayloadParsers/JingleS5BTransportMethodPayloadParser.cpp
+++ b/Swiften/Parser/PayloadParsers/JingleS5BTransportMethodPayloadParser.cpp
@@ -5,7 +5,7 @@
5 */ 5 */
6 6
7/* 7/*
8 * Copyright (c) 2014-2016 Isode Limited. 8 * Copyright (c) 2014-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 */
@@ -13,6 +13,7 @@
13#include <Swiften/Parser/PayloadParsers/JingleS5BTransportMethodPayloadParser.h> 13#include <Swiften/Parser/PayloadParsers/JingleS5BTransportMethodPayloadParser.h>
14 14
15#include <boost/lexical_cast.hpp> 15#include <boost/lexical_cast.hpp>
16#include <boost/numeric/conversion/cast.hpp>
16#include <boost/optional.hpp> 17#include <boost/optional.hpp>
17 18
18#include <Swiften/Base/Log.h> 19#include <Swiften/Base/Log.h>
@@ -40,10 +41,10 @@ namespace Swift {
40 JingleS5BTransportPayload::Candidate candidate; 41 JingleS5BTransportPayload::Candidate candidate;
41 candidate.cid = attributes.getAttributeValue("cid").get_value_or(""); 42 candidate.cid = attributes.getAttributeValue("cid").get_value_or("");
42 43
43 int port = -1; 44 unsigned short port = 0;
44 try { 45 try {
45 port = boost::lexical_cast<int>(attributes.getAttributeValue("port").get_value_or("-1")); 46 port = boost::numeric_cast<unsigned short>(boost::lexical_cast<int>(attributes.getAttributeValue("port").get_value_or("0")));
46 } catch(boost::bad_lexical_cast &) { } 47 } catch(...) { }
47 candidate.hostPort = HostAddressPort(HostAddress::fromString(attributes.getAttributeValue("host").get_value_or("")).get_value_or(HostAddress()), port); 48 candidate.hostPort = HostAddressPort(HostAddress::fromString(attributes.getAttributeValue("host").get_value_or("")).get_value_or(HostAddress()), port);
48 candidate.jid = JID(attributes.getAttributeValue("jid").get_value_or("")); 49 candidate.jid = JID(attributes.getAttributeValue("jid").get_value_or(""));
49 int priority = -1; 50 int priority = -1;
diff --git a/Swiften/Parser/PayloadParsers/S5BProxyRequestParser.cpp b/Swiften/Parser/PayloadParsers/S5BProxyRequestParser.cpp
index 502f400..7a5a1fd 100644
--- a/Swiften/Parser/PayloadParsers/S5BProxyRequestParser.cpp
+++ b/Swiften/Parser/PayloadParsers/S5BProxyRequestParser.cpp
@@ -5,7 +5,7 @@
5 */ 5 */
6 6
7/* 7/*
8 * Copyright (c) 2015-2016 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 */
@@ -13,6 +13,7 @@
13#include <Swiften/Parser/PayloadParsers/S5BProxyRequestParser.h> 13#include <Swiften/Parser/PayloadParsers/S5BProxyRequestParser.h>
14 14
15#include <boost/lexical_cast.hpp> 15#include <boost/lexical_cast.hpp>
16#include <boost/numeric/conversion/cast.hpp>
16#include <boost/optional.hpp> 17#include <boost/optional.hpp>
17 18
18namespace Swift { 19namespace Swift {
@@ -27,15 +28,14 @@ void S5BProxyRequestParser::handleStartElement(const std::string& element, const
27 if (element == "streamhost") { 28 if (element == "streamhost") {
28 if (attributes.getAttributeValue("host") && attributes.getAttributeValue("jid") && attributes.getAttributeValue("port")) { 29 if (attributes.getAttributeValue("host") && attributes.getAttributeValue("jid") && attributes.getAttributeValue("port")) {
29 std::string host = attributes.getAttributeValue("host").get_value_or(""); 30 std::string host = attributes.getAttributeValue("host").get_value_or("");
30 int port = -1; 31 unsigned short port = 0;
31 JID jid = attributes.getAttributeValue("jid").get_value_or(""); 32 JID jid = attributes.getAttributeValue("jid").get_value_or("");
32 33
33 try { 34 try {
34 port = boost::lexical_cast<int>(attributes.getAttributeValue("port").get()); 35 port = boost::numeric_cast<unsigned short>(boost::lexical_cast<int>(attributes.getAttributeValue("port").get()));
35 } catch (boost::bad_lexical_cast &) { 36 } catch (...) {
36 port = -1;
37 } 37 }
38 if (!host.empty() && port != -1 && jid.isValid()) { 38 if (!host.empty() && port != 0 && jid.isValid()) {
39 S5BProxyRequest::StreamHost streamHost; 39 S5BProxyRequest::StreamHost streamHost;
40 streamHost.host = host; 40 streamHost.host = host;
41 streamHost.port = port; 41 streamHost.port = port;