diff options
Diffstat (limited to 'Swiften/Network')
| -rw-r--r-- | Swiften/Network/BOSHConnectionPool.cpp | 8 | ||||
| -rw-r--r-- | Swiften/Network/BOSHConnectionPool.h | 6 | ||||
| -rw-r--r-- | Swiften/Network/TLSConnection.cpp | 4 | ||||
| -rw-r--r-- | Swiften/Network/TLSConnection.h | 4 | ||||
| -rw-r--r-- | Swiften/Network/TLSConnectionFactory.cpp | 4 | ||||
| -rw-r--r-- | Swiften/Network/TLSConnectionFactory.h | 4 | ||||
| -rw-r--r-- | Swiften/Network/UnitTest/BOSHConnectionPoolTest.cpp | 11 |
7 files changed, 24 insertions, 17 deletions
diff --git a/Swiften/Network/BOSHConnectionPool.cpp b/Swiften/Network/BOSHConnectionPool.cpp index 56f7d12..c037b34 100644 --- a/Swiften/Network/BOSHConnectionPool.cpp +++ b/Swiften/Network/BOSHConnectionPool.cpp | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * Copyright (c) 2011 Isode Limited. | 2 | * Copyright (c) 2011-2015 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 | */ |
| @@ -17,7 +17,7 @@ | |||
| 17 | #include <Swiften/Network/CachingDomainNameResolver.h> | 17 | #include <Swiften/Network/CachingDomainNameResolver.h> |
| 18 | 18 | ||
| 19 | namespace Swift { | 19 | namespace Swift { |
| 20 | BOSHConnectionPool::BOSHConnectionPool(const URL& boshURL, DomainNameResolver* realResolver, ConnectionFactory* connectionFactoryParameter, XMLParserFactory* parserFactory, TLSContextFactory* tlsFactory, TimerFactory* timerFactory, EventLoop* eventLoop, const std::string& to, unsigned long long initialRID, const URL& boshHTTPConnectProxyURL, const SafeString& boshHTTPConnectProxyAuthID, const SafeString& boshHTTPConnectProxyAuthPassword) : | 20 | BOSHConnectionPool::BOSHConnectionPool(const URL& boshURL, DomainNameResolver* realResolver, ConnectionFactory* connectionFactoryParameter, XMLParserFactory* parserFactory, TLSContextFactory* tlsFactory, TimerFactory* timerFactory, EventLoop* eventLoop, const std::string& to, unsigned long long initialRID, const URL& boshHTTPConnectProxyURL, const SafeString& boshHTTPConnectProxyAuthID, const SafeString& boshHTTPConnectProxyAuthPassword, const TLSOptions& tlsOptions) : |
| 21 | boshURL(boshURL), | 21 | boshURL(boshURL), |
| 22 | connectionFactory(connectionFactoryParameter), | 22 | connectionFactory(connectionFactoryParameter), |
| 23 | xmlParserFactory(parserFactory), | 23 | xmlParserFactory(parserFactory), |
| @@ -31,13 +31,13 @@ BOSHConnectionPool::BOSHConnectionPool(const URL& boshURL, DomainNameResolver* r | |||
| 31 | 31 | ||
| 32 | if (!boshHTTPConnectProxyURL.isEmpty()) { | 32 | if (!boshHTTPConnectProxyURL.isEmpty()) { |
| 33 | if (boshHTTPConnectProxyURL.getScheme() == "https") { | 33 | if (boshHTTPConnectProxyURL.getScheme() == "https") { |
| 34 | connectionFactory = new TLSConnectionFactory(tlsFactory, connectionFactory); | 34 | connectionFactory = new TLSConnectionFactory(tlsFactory, connectionFactory, tlsOptions); |
| 35 | myConnectionFactories.push_back(connectionFactory); | 35 | myConnectionFactories.push_back(connectionFactory); |
| 36 | } | 36 | } |
| 37 | connectionFactory = new HTTPConnectProxiedConnectionFactory(realResolver, connectionFactory, timerFactory, boshHTTPConnectProxyURL.getHost(), URL::getPortOrDefaultPort(boshHTTPConnectProxyURL), boshHTTPConnectProxyAuthID, boshHTTPConnectProxyAuthPassword); | 37 | connectionFactory = new HTTPConnectProxiedConnectionFactory(realResolver, connectionFactory, timerFactory, boshHTTPConnectProxyURL.getHost(), URL::getPortOrDefaultPort(boshHTTPConnectProxyURL), boshHTTPConnectProxyAuthID, boshHTTPConnectProxyAuthPassword); |
| 38 | } | 38 | } |
| 39 | if (boshURL.getScheme() == "https") { | 39 | if (boshURL.getScheme() == "https") { |
| 40 | connectionFactory = new TLSConnectionFactory(tlsFactory, connectionFactory); | 40 | connectionFactory = new TLSConnectionFactory(tlsFactory, connectionFactory, tlsOptions); |
| 41 | myConnectionFactories.push_back(connectionFactory); | 41 | myConnectionFactories.push_back(connectionFactory); |
| 42 | } | 42 | } |
| 43 | resolver = new CachingDomainNameResolver(realResolver, eventLoop); | 43 | resolver = new CachingDomainNameResolver(realResolver, eventLoop); |
diff --git a/Swiften/Network/BOSHConnectionPool.h b/Swiften/Network/BOSHConnectionPool.h index 570ba4b..d845a3d 100644 --- a/Swiften/Network/BOSHConnectionPool.h +++ b/Swiften/Network/BOSHConnectionPool.h | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * Copyright (c) 2011 Isode Limited. | 2 | * Copyright (c) 2011-2015 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 | */ |
| @@ -12,6 +12,8 @@ | |||
| 12 | #include <Swiften/Base/API.h> | 12 | #include <Swiften/Base/API.h> |
| 13 | #include <Swiften/Base/SafeString.h> | 13 | #include <Swiften/Base/SafeString.h> |
| 14 | #include <Swiften/Network/BOSHConnection.h> | 14 | #include <Swiften/Network/BOSHConnection.h> |
| 15 | #include <Swiften/TLS/TLSOptions.h> | ||
| 16 | |||
| 15 | 17 | ||
| 16 | namespace Swift { | 18 | namespace Swift { |
| 17 | class HTTPConnectProxiedConnectionFactory; | 19 | class HTTPConnectProxiedConnectionFactory; |
| @@ -21,7 +23,7 @@ namespace Swift { | |||
| 21 | 23 | ||
| 22 | class SWIFTEN_API BOSHConnectionPool : public boost::bsignals::trackable { | 24 | class SWIFTEN_API BOSHConnectionPool : public boost::bsignals::trackable { |
| 23 | public: | 25 | public: |
| 24 | BOSHConnectionPool(const URL& boshURL, DomainNameResolver* resolver, ConnectionFactory* connectionFactory, XMLParserFactory* parserFactory, TLSContextFactory* tlsFactory, TimerFactory* timerFactory, EventLoop* eventLoop, const std::string& to, unsigned long long initialRID, const URL& boshHTTPConnectProxyURL, const SafeString& boshHTTPConnectProxyAuthID, const SafeString& boshHTTPConnectProxyAuthPassword); | 26 | BOSHConnectionPool(const URL& boshURL, DomainNameResolver* resolver, ConnectionFactory* connectionFactory, XMLParserFactory* parserFactory, TLSContextFactory* tlsFactory, TimerFactory* timerFactory, EventLoop* eventLoop, const std::string& to, unsigned long long initialRID, const URL& boshHTTPConnectProxyURL, const SafeString& boshHTTPConnectProxyAuthID, const SafeString& boshHTTPConnectProxyAuthPassword, const TLSOptions& tlsOptions); |
| 25 | ~BOSHConnectionPool(); | 27 | ~BOSHConnectionPool(); |
| 26 | void write(const SafeByteArray& data); | 28 | void write(const SafeByteArray& data); |
| 27 | void writeFooter(); | 29 | void writeFooter(); |
diff --git a/Swiften/Network/TLSConnection.cpp b/Swiften/Network/TLSConnection.cpp index f0b6fa4..149548a 100644 --- a/Swiften/Network/TLSConnection.cpp +++ b/Swiften/Network/TLSConnection.cpp | |||
| @@ -14,8 +14,8 @@ | |||
| 14 | 14 | ||
| 15 | namespace Swift { | 15 | namespace Swift { |
| 16 | 16 | ||
| 17 | TLSConnection::TLSConnection(Connection::ref connection, TLSContextFactory* tlsFactory) : connection(connection) { | 17 | TLSConnection::TLSConnection(Connection::ref connection, TLSContextFactory* tlsFactory, const TLSOptions& tlsOptions) : connection(connection) { |
| 18 | context = tlsFactory->createTLSContext(); | 18 | context = tlsFactory->createTLSContext(tlsOptions); |
| 19 | context->onDataForNetwork.connect(boost::bind(&TLSConnection::handleTLSDataForNetwork, this, _1)); | 19 | context->onDataForNetwork.connect(boost::bind(&TLSConnection::handleTLSDataForNetwork, this, _1)); |
| 20 | context->onDataForApplication.connect(boost::bind(&TLSConnection::handleTLSDataForApplication, this, _1)); | 20 | context->onDataForApplication.connect(boost::bind(&TLSConnection::handleTLSDataForApplication, this, _1)); |
| 21 | context->onConnected.connect(boost::bind(&TLSConnection::handleTLSConnectFinished, this, false)); | 21 | context->onConnected.connect(boost::bind(&TLSConnection::handleTLSConnectFinished, this, false)); |
diff --git a/Swiften/Network/TLSConnection.h b/Swiften/Network/TLSConnection.h index ebf2e43..96525ad 100644 --- a/Swiften/Network/TLSConnection.h +++ b/Swiften/Network/TLSConnection.h | |||
| @@ -13,6 +13,8 @@ | |||
| 13 | #include <Swiften/Base/API.h> | 13 | #include <Swiften/Base/API.h> |
| 14 | #include <Swiften/Base/SafeByteArray.h> | 14 | #include <Swiften/Base/SafeByteArray.h> |
| 15 | #include <Swiften/Network/Connection.h> | 15 | #include <Swiften/Network/Connection.h> |
| 16 | #include <Swiften/TLS/TLSOptions.h> | ||
| 17 | |||
| 16 | 18 | ||
| 17 | namespace Swift { | 19 | namespace Swift { |
| 18 | class HostAddressPort; | 20 | class HostAddressPort; |
| @@ -22,7 +24,7 @@ namespace Swift { | |||
| 22 | class SWIFTEN_API TLSConnection : public Connection { | 24 | class SWIFTEN_API TLSConnection : public Connection { |
| 23 | public: | 25 | public: |
| 24 | 26 | ||
| 25 | TLSConnection(Connection::ref connection, TLSContextFactory* tlsFactory); | 27 | TLSConnection(Connection::ref connection, TLSContextFactory* tlsFactory, const TLSOptions&); |
| 26 | virtual ~TLSConnection(); | 28 | virtual ~TLSConnection(); |
| 27 | 29 | ||
| 28 | virtual void listen() {assert(false);} | 30 | virtual void listen() {assert(false);} |
diff --git a/Swiften/Network/TLSConnectionFactory.cpp b/Swiften/Network/TLSConnectionFactory.cpp index ac0ab8e..cc20b2d 100644 --- a/Swiften/Network/TLSConnectionFactory.cpp +++ b/Swiften/Network/TLSConnectionFactory.cpp | |||
| @@ -12,7 +12,7 @@ | |||
| 12 | 12 | ||
| 13 | namespace Swift { | 13 | namespace Swift { |
| 14 | 14 | ||
| 15 | TLSConnectionFactory::TLSConnectionFactory(TLSContextFactory* contextFactory, ConnectionFactory* connectionFactory) : contextFactory(contextFactory), connectionFactory(connectionFactory){ | 15 | TLSConnectionFactory::TLSConnectionFactory(TLSContextFactory* contextFactory, ConnectionFactory* connectionFactory, const TLSOptions& o) : contextFactory(contextFactory), connectionFactory(connectionFactory), options_(o) { |
| 16 | 16 | ||
| 17 | } | 17 | } |
| 18 | 18 | ||
| @@ -22,7 +22,7 @@ TLSConnectionFactory::~TLSConnectionFactory() { | |||
| 22 | 22 | ||
| 23 | 23 | ||
| 24 | boost::shared_ptr<Connection> TLSConnectionFactory::createConnection() { | 24 | boost::shared_ptr<Connection> TLSConnectionFactory::createConnection() { |
| 25 | return boost::make_shared<TLSConnection>(connectionFactory->createConnection(), contextFactory); | 25 | return boost::make_shared<TLSConnection>(connectionFactory->createConnection(), contextFactory, options_); |
| 26 | } | 26 | } |
| 27 | 27 | ||
| 28 | } | 28 | } |
diff --git a/Swiften/Network/TLSConnectionFactory.h b/Swiften/Network/TLSConnectionFactory.h index 3dfee06..0c67014 100644 --- a/Swiften/Network/TLSConnectionFactory.h +++ b/Swiften/Network/TLSConnectionFactory.h | |||
| @@ -11,18 +11,20 @@ | |||
| 11 | #include <Swiften/Base/API.h> | 11 | #include <Swiften/Base/API.h> |
| 12 | #include <Swiften/Network/ConnectionFactory.h> | 12 | #include <Swiften/Network/ConnectionFactory.h> |
| 13 | #include <Swiften/TLS/TLSContextFactory.h> | 13 | #include <Swiften/TLS/TLSContextFactory.h> |
| 14 | #include <Swiften/TLS/TLSOptions.h> | ||
| 14 | 15 | ||
| 15 | namespace Swift { | 16 | namespace Swift { |
| 16 | class Connection; | 17 | class Connection; |
| 17 | 18 | ||
| 18 | class SWIFTEN_API TLSConnectionFactory : public ConnectionFactory { | 19 | class SWIFTEN_API TLSConnectionFactory : public ConnectionFactory { |
| 19 | public: | 20 | public: |
| 20 | TLSConnectionFactory(TLSContextFactory* contextFactory, ConnectionFactory* connectionFactory); | 21 | TLSConnectionFactory(TLSContextFactory* contextFactory, ConnectionFactory* connectionFactory, const TLSOptions&); |
| 21 | virtual ~TLSConnectionFactory(); | 22 | virtual ~TLSConnectionFactory(); |
| 22 | 23 | ||
| 23 | virtual boost::shared_ptr<Connection> createConnection(); | 24 | virtual boost::shared_ptr<Connection> createConnection(); |
| 24 | private: | 25 | private: |
| 25 | TLSContextFactory* contextFactory; | 26 | TLSContextFactory* contextFactory; |
| 26 | ConnectionFactory* connectionFactory; | 27 | ConnectionFactory* connectionFactory; |
| 28 | TLSOptions options_; | ||
| 27 | }; | 29 | }; |
| 28 | } | 30 | } |
diff --git a/Swiften/Network/UnitTest/BOSHConnectionPoolTest.cpp b/Swiften/Network/UnitTest/BOSHConnectionPoolTest.cpp index e5ac121..e687517 100644 --- a/Swiften/Network/UnitTest/BOSHConnectionPoolTest.cpp +++ b/Swiften/Network/UnitTest/BOSHConnectionPoolTest.cpp | |||
| @@ -16,15 +16,16 @@ | |||
| 16 | #include <boost/lexical_cast.hpp> | 16 | #include <boost/lexical_cast.hpp> |
| 17 | 17 | ||
| 18 | #include <Swiften/Base/Algorithm.h> | 18 | #include <Swiften/Base/Algorithm.h> |
| 19 | #include <Swiften/Network/Connection.h> | 19 | #include <Swiften/EventLoop/DummyEventLoop.h> |
| 20 | #include <Swiften/Network/ConnectionFactory.h> | ||
| 21 | #include <Swiften/Network/BOSHConnection.h> | 20 | #include <Swiften/Network/BOSHConnection.h> |
| 22 | #include <Swiften/Network/BOSHConnectionPool.h> | 21 | #include <Swiften/Network/BOSHConnectionPool.h> |
| 22 | #include <Swiften/Network/Connection.h> | ||
| 23 | #include <Swiften/Network/ConnectionFactory.h> | ||
| 24 | #include <Swiften/Network/DummyTimerFactory.h> | ||
| 23 | #include <Swiften/Network/HostAddressPort.h> | 25 | #include <Swiften/Network/HostAddressPort.h> |
| 24 | #include <Swiften/Network/StaticDomainNameResolver.h> | 26 | #include <Swiften/Network/StaticDomainNameResolver.h> |
| 25 | #include <Swiften/Network/DummyTimerFactory.h> | ||
| 26 | #include <Swiften/EventLoop/DummyEventLoop.h> | ||
| 27 | #include <Swiften/Parser/PlatformXMLParserFactory.h> | 27 | #include <Swiften/Parser/PlatformXMLParserFactory.h> |
| 28 | #include <Swiften/TLS/TLSOptions.h> | ||
| 28 | 29 | ||
| 29 | 30 | ||
| 30 | 31 | ||
| @@ -322,7 +323,7 @@ class BOSHConnectionPoolTest : public CppUnit::TestFixture { | |||
| 322 | private: | 323 | private: |
| 323 | 324 | ||
| 324 | PoolRef createTestling() { | 325 | PoolRef createTestling() { |
| 325 | BOSHConnectionPool* a = new BOSHConnectionPool(boshURL, resolver, connectionFactory, &parserFactory, static_cast<TLSContextFactory*>(NULL), timerFactory, eventLoop, to, initialRID, URL(), SafeString(""), SafeString("")); | 326 | BOSHConnectionPool* a = new BOSHConnectionPool(boshURL, resolver, connectionFactory, &parserFactory, static_cast<TLSContextFactory*>(NULL), timerFactory, eventLoop, to, initialRID, URL(), SafeString(""), SafeString(""), TLSOptions()); |
| 326 | PoolRef pool(a); | 327 | PoolRef pool(a); |
| 327 | //FIXME: Remko - why does the above work, but the below fail? | 328 | //FIXME: Remko - why does the above work, but the below fail? |
| 328 | //PoolRef pool = boost::make_shared<BOSHConnectionPool>(boshURL, resolver, connectionFactory, &parserFactory, static_cast<TLSContextFactory*>(NULL), timerFactory, eventLoop, to, initialRID, URL(), SafeString(""), SafeString("")); | 329 | //PoolRef pool = boost::make_shared<BOSHConnectionPool>(boshURL, resolver, connectionFactory, &parserFactory, static_cast<TLSContextFactory*>(NULL), timerFactory, eventLoop, to, initialRID, URL(), SafeString(""), SafeString("")); |
Swift