diff options
Diffstat (limited to 'Swiften/Network/TLSConnection.cpp')
| -rw-r--r-- | Swiften/Network/TLSConnection.cpp | 87 | 
1 files changed, 47 insertions, 40 deletions
| diff --git a/Swiften/Network/TLSConnection.cpp b/Swiften/Network/TLSConnection.cpp index 543ee1e..82bf114 100644 --- a/Swiften/Network/TLSConnection.cpp +++ b/Swiften/Network/TLSConnection.cpp @@ -1,7 +1,7 @@  /* - * Copyright (c) 2011 Kevin Smith - * Licensed under the GNU General Public License v3. - * See Documentation/Licenses/GPLv3.txt for more information. + * Copyright (c) 2011-2018 Isode Limited. + * All rights reserved. + * See the COPYING file for more information.   */  #include <Swiften/Network/TLSConnection.h> @@ -14,78 +14,85 @@  namespace Swift { -TLSConnection::TLSConnection(Connection::ref connection, TLSContextFactory* tlsFactory) : connection(connection) { -	context = tlsFactory->createTLSContext(); -	context->onDataForNetwork.connect(boost::bind(&TLSConnection::handleTLSDataForNetwork, this, _1)); -	context->onDataForApplication.connect(boost::bind(&TLSConnection::handleTLSDataForApplication, this, _1)); -	context->onConnected.connect(boost::bind(&TLSConnection::handleTLSConnectFinished, this, false)); -	context->onError.connect(boost::bind(&TLSConnection::handleTLSConnectFinished, this, true)); - -	connection->onConnectFinished.connect(boost::bind(&TLSConnection::handleRawConnectFinished, this, _1)); -	connection->onDataRead.connect(boost::bind(&TLSConnection::handleRawDataRead, this, _1)); -	connection->onDataWritten.connect(boost::bind(&TLSConnection::handleRawDataWritten, this)); -	connection->onDisconnected.connect(boost::bind(&TLSConnection::handleRawDisconnected, this, _1)); +TLSConnection::TLSConnection(Connection::ref connection, TLSContextFactory* tlsFactory, const TLSOptions& tlsOptions) : connection(connection) { +    context = tlsFactory->createTLSContext(tlsOptions); +    context->onDataForNetwork.connect(boost::bind(&TLSConnection::handleTLSDataForNetwork, this, _1)); +    context->onDataForApplication.connect(boost::bind(&TLSConnection::handleTLSDataForApplication, this, _1)); +    context->onConnected.connect(boost::bind(&TLSConnection::handleTLSConnectFinished, this, false)); +    context->onError.connect(boost::bind(&TLSConnection::handleTLSConnectFinished, this, true)); + +    connection->onConnectFinished.connect(boost::bind(&TLSConnection::handleRawConnectFinished, this, _1)); +    connection->onDataRead.connect(boost::bind(&TLSConnection::handleRawDataRead, this, _1)); +    connection->onDataWritten.connect(boost::bind(&TLSConnection::handleRawDataWritten, this)); +    connection->onDisconnected.connect(boost::bind(&TLSConnection::handleRawDisconnected, this, _1));  }  TLSConnection::~TLSConnection() { -	connection->onConnectFinished.disconnect(boost::bind(&TLSConnection::handleRawConnectFinished, this, _1)); -	connection->onDataRead.disconnect(boost::bind(&TLSConnection::handleRawDataRead, this, _1)); -	connection->onDataWritten.disconnect(boost::bind(&TLSConnection::handleRawDataWritten, this)); -	connection->onDisconnected.disconnect(boost::bind(&TLSConnection::handleRawDisconnected, this, _1)); -	delete context; +    connection->onConnectFinished.disconnect(boost::bind(&TLSConnection::handleRawConnectFinished, this, _1)); +    connection->onDataRead.disconnect(boost::bind(&TLSConnection::handleRawDataRead, this, _1)); +    connection->onDataWritten.disconnect(boost::bind(&TLSConnection::handleRawDataWritten, this)); +    connection->onDisconnected.disconnect(boost::bind(&TLSConnection::handleRawDisconnected, this, _1));  }  void TLSConnection::handleTLSConnectFinished(bool error) { -	onConnectFinished(error); -	if (error) { -		disconnect(); -	} +    onConnectFinished(error); +    if (error) { +        disconnect(); +    }  }  void TLSConnection::handleTLSDataForNetwork(const SafeByteArray& data) { -	connection->write(data); +    connection->write(data);  }  void TLSConnection::handleTLSDataForApplication(const SafeByteArray& data) { -	onDataRead(boost::make_shared<SafeByteArray>(data)); +    onDataRead(std::make_shared<SafeByteArray>(data));  }  void TLSConnection::connect(const HostAddressPort& address) { -	connection->connect(address); +    connection->connect(address);  }  void TLSConnection::disconnect() { -	connection->disconnect(); +    connection->disconnect();  }  void TLSConnection::write(const SafeByteArray& data) { -	context->handleDataFromApplication(data); +    context->handleDataFromApplication(data);  }  HostAddressPort TLSConnection::getLocalAddress() const { -	return connection->getLocalAddress(); +    return connection->getLocalAddress(); +} + +HostAddressPort TLSConnection::getRemoteAddress() const { +    return connection->getRemoteAddress(); +} + +TLSContext* TLSConnection::getTLSContext() const { +    return context.get();  }  void TLSConnection::handleRawConnectFinished(bool error) { -	connection->onConnectFinished.disconnect(boost::bind(&TLSConnection::handleRawConnectFinished, this, _1)); -	if (error) { -		onConnectFinished(true); -	} -	else { -		context->connect(); -	} +    connection->onConnectFinished.disconnect(boost::bind(&TLSConnection::handleRawConnectFinished, this, _1)); +    if (error) { +        onConnectFinished(true); +    } +    else { +        context->connect(); +    }  }  void TLSConnection::handleRawDisconnected(const boost::optional<Error>& error) { -	onDisconnected(error); +    onDisconnected(error);  } -void TLSConnection::handleRawDataRead(boost::shared_ptr<SafeByteArray> data) { -	context->handleDataFromNetwork(*data); +void TLSConnection::handleRawDataRead(std::shared_ptr<SafeByteArray> data) { +    context->handleDataFromNetwork(*data);  }  void TLSConnection::handleRawDataWritten() { -	onDataWritten(); +    onDataWritten();  }  } | 
 Swift
 Swift