From f9491c7f2530417c24a913bc56efd0b756dd3d3d Mon Sep 17 00:00:00 2001 From: Jeremy Lainé Date: Wed, 11 Aug 2010 16:38:12 +0000 Subject: store a pointer to a QSslSocket instead a QSslSocket --- src/QXmppStream.cpp | 46 ++++++++++++++++++++++++---------------------- 1 file changed, 24 insertions(+), 22 deletions(-) (limited to 'src/QXmppStream.cpp') diff --git a/src/QXmppStream.cpp b/src/QXmppStream.cpp index 424b1f00..d1456b23 100644 --- a/src/QXmppStream.cpp +++ b/src/QXmppStream.cpp @@ -71,7 +71,7 @@ public: QXmppConfiguration config; QByteArray dataBuffer; QXmppLogger* logger; - QSslSocket socket; + QSslSocket* socket; QAbstractSocket::SocketError socketError; QXmppStanza::Error::Condition xmppStreamError; @@ -106,26 +106,29 @@ QXmppStream::QXmppStream(QObject *parent) // initialise logger setLogger(QXmppLogger::getLogger()); - bool check = QObject::connect(&d->socket, SIGNAL(hostFound()), + // create socket + d->socket = new QSslSocket(this); + + bool check = QObject::connect(d->socket, SIGNAL(hostFound()), this, SLOT(socketHostFound())); Q_ASSERT(check); - check = QObject::connect(&d->socket, SIGNAL(connected()), + check = QObject::connect(d->socket, SIGNAL(connected()), this, SLOT(socketConnected())); Q_ASSERT(check); - check = QObject::connect(&d->socket, SIGNAL(disconnected()), + check = QObject::connect(d->socket, SIGNAL(disconnected()), this, SLOT(socketDisconnected())); Q_ASSERT(check); - check = QObject::connect(&d->socket, SIGNAL(readyRead()), + check = QObject::connect(d->socket, SIGNAL(readyRead()), this, SLOT(socketReadReady())); Q_ASSERT(check); - check = QObject::connect(&d->socket, SIGNAL(encrypted()), + check = QObject::connect(d->socket, SIGNAL(encrypted()), this, SLOT(socketEncrypted())); Q_ASSERT(check); - check = QObject::connect(&d->socket, + check = QObject::connect(d->socket, SIGNAL(sslErrors(const QList&)), this, SLOT(socketSslErrors(const QList&))); Q_ASSERT(check); - check = QObject::connect(&d->socket, + check = QObject::connect(d->socket, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(socketError(QAbstractSocket::SocketError))); Q_ASSERT(check); @@ -165,8 +168,8 @@ void QXmppStream::connect() // prepare for connection d->authStep = 0; - d->socket.setProxy(configuration().networkProxy()); - d->socket.connectToHost(configuration(). + d->socket->setProxy(configuration().networkProxy()); + d->socket->connectToHost(configuration(). host(), configuration().port()); } @@ -177,7 +180,7 @@ void QXmppStream::socketSslErrors(const QList & error) warning(error.at(i).errorString()); if (configuration().ignoreSslErrors()) - d->socket.ignoreSslErrors(); + d->socket->ignoreSslErrors(); } void QXmppStream::socketHostFound() @@ -211,12 +214,12 @@ void QXmppStream::socketError(QAbstractSocket::SocketError ee) { d->socketError = ee; emit error(QXmppClient::SocketError); - warning(QString("Socket error: " + d->socket.errorString())); + warning(QString("Socket error: " + d->socket->errorString())); } void QXmppStream::socketReadReady() { - const QByteArray data = d->socket.readAll(); + const QByteArray data = d->socket->readAll(); //debug("SERVER [COULD BE PARTIAL DATA]:" + data.left(20)); parser(data); } @@ -339,7 +342,7 @@ void QXmppStream::parser(const QByteArray& data) namespaceURI() == ns_sasl; bool useSasl = configuration().useSASLAuthentication(); - if (!d->socket.isEncrypted()) + if (!d->socket->isEncrypted()) { // parse remote TLS mode QXmppConfiguration::StreamSecurityMode remoteSecurity; @@ -356,7 +359,7 @@ void QXmppStream::parser(const QByteArray& data) // determine TLS mode to use const QXmppConfiguration::StreamSecurityMode localSecurity = configuration().streamSecurityMode(); - if (!d->socket.supportsSsl() && + if (!d->socket->supportsSsl() && (localSecurity == QXmppConfiguration::TLSRequired || remoteSecurity == QXmppConfiguration::TLSRequired)) { @@ -372,7 +375,7 @@ void QXmppStream::parser(const QByteArray& data) return; } - if (d->socket.supportsSsl() && + if (d->socket->supportsSsl() && (remoteSecurity == QXmppConfiguration::TLSRequired || localSecurity != QXmppConfiguration::TLSDisabled)) { @@ -468,7 +471,7 @@ void QXmppStream::parser(const QByteArray& data) if(nodeRecv.tagName() == "proceed") { debug("Starting encryption"); - d->socket.startClientEncryption(); + d->socket->startClientEncryption(); return; } } @@ -800,7 +803,6 @@ void QXmppStream::parser(const QByteArray& data) } } - void QXmppStream::sendStartStream() { QByteArray data = "