summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swiften/Network')
-rw-r--r--Swiften/Network/BOSHConnectionPool.cpp8
-rw-r--r--Swiften/Network/BOSHConnectionPool.h6
-rw-r--r--Swiften/Network/TLSConnection.cpp4
-rw-r--r--Swiften/Network/TLSConnection.h4
-rw-r--r--Swiften/Network/TLSConnectionFactory.cpp4
-rw-r--r--Swiften/Network/TLSConnectionFactory.h4
-rw-r--r--Swiften/Network/UnitTest/BOSHConnectionPoolTest.cpp11
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
19namespace Swift { 19namespace Swift {
20BOSHConnectionPool::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) : 20BOSHConnectionPool::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
16namespace Swift { 18namespace 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
15namespace Swift { 15namespace Swift {
16 16
17TLSConnection::TLSConnection(Connection::ref connection, TLSContextFactory* tlsFactory) : connection(connection) { 17TLSConnection::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
17namespace Swift { 19namespace 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
13namespace Swift { 13namespace Swift {
14 14
15TLSConnectionFactory::TLSConnectionFactory(TLSContextFactory* contextFactory, ConnectionFactory* connectionFactory) : contextFactory(contextFactory), connectionFactory(connectionFactory){ 15TLSConnectionFactory::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
24boost::shared_ptr<Connection> TLSConnectionFactory::createConnection() { 24boost::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
15namespace Swift { 16namespace 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(""));