aboutsummaryrefslogtreecommitdiff
path: root/src/QXmppStream.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/QXmppStream.cpp')
-rw-r--r--src/QXmppStream.cpp46
1 files changed, 24 insertions, 22 deletions
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<QSslError>&)), this,
SLOT(socketSslErrors(const QList<QSslError>&)));
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<QSslError> & 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 = "<?xml version='1.0'?><stream:stream to='";
@@ -814,7 +816,7 @@ bool QXmppStream::sendToServer(const QByteArray& packet)
emit logMessage(QXmppLogger::SentMessage, QString::fromUtf8(packet));
if (!isConnected())
return false;
- return d->socket.write( packet ) == packet.size();
+ return d->socket->write( packet ) == packet.size();
}
void QXmppStream::sendNonSASLAuth(bool plainText)
@@ -987,13 +989,13 @@ void QXmppStream::disconnect()
{
d->authStep = 0;
sendEndStream();
- d->socket.flush();
- d->socket.disconnectFromHost();
+ d->socket->flush();
+ d->socket->disconnectFromHost();
}
bool QXmppStream::isConnected() const
{
- return d->socket.state() == QAbstractSocket::ConnectedState;
+ return d->socket->state() == QAbstractSocket::ConnectedState;
}
bool QXmppStream::sendPacket(const QXmppPacket& packet)