From 1bd3eecff28c2b0d080102c26fd89dc3f56b4e09 Mon Sep 17 00:00:00 2001 From: Jeremy Lainé Date: Wed, 16 Mar 2011 18:28:22 +0000 Subject: catch socket errors for outgoing S2S connections, otherwise they never get terminated --- src/QXmppOutgoingServer.cpp | 10 ++++++++++ src/QXmppOutgoingServer.h | 3 +++ 2 files changed, 13 insertions(+) (limited to 'src') diff --git a/src/QXmppOutgoingServer.cpp b/src/QXmppOutgoingServer.cpp index f5537ab7..577c99ff 100644 --- a/src/QXmppOutgoingServer.cpp +++ b/src/QXmppOutgoingServer.cpp @@ -60,6 +60,10 @@ QXmppOutgoingServer::QXmppOutgoingServer(const QString &domain, QObject *parent) QSslSocket *socket = new QSslSocket(this); setSocket(socket); + check = connect(socket, SIGNAL(error(QAbstractSocket::SocketError)), + this, SLOT(socketError(QAbstractSocket::SocketError))); + Q_ASSERT(check); + d->dialbackTimer = new QTimer(this); d->dialbackTimer->setInterval(5000); d->dialbackTimer->setSingleShot(true); @@ -287,3 +291,9 @@ void QXmppOutgoingServer::slotSslErrors(const QList &errors) socket()->ignoreSslErrors(); } +void QXmppOutgoingServer::socketError(QAbstractSocket::SocketError error) +{ + warning(QString("Socket error: " + socket()->errorString())); + emit disconnected(); +} + diff --git a/src/QXmppOutgoingServer.h b/src/QXmppOutgoingServer.h index 25d816b1..1ac726bd 100644 --- a/src/QXmppOutgoingServer.h +++ b/src/QXmppOutgoingServer.h @@ -24,6 +24,8 @@ #ifndef QXMPPOUTGOINGSERVER_H #define QXMPPOUTGOINGSERVER_H +#include + #include "QXmppStream.h" class QSslError; @@ -68,6 +70,7 @@ private slots: void connectToHost(const QXmppSrvInfo &serviceInfo); void sendDialback(); void slotSslErrors(const QList &errors); + void socketError(QAbstractSocket::SocketError error); private: Q_DISABLE_COPY(QXmppOutgoingServer) -- cgit v1.2.3