diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2011-03-16 18:28:22 +0000 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2011-03-16 18:28:22 +0000 |
| commit | 1bd3eecff28c2b0d080102c26fd89dc3f56b4e09 (patch) | |
| tree | 9e01e3ed2ea90c3401542d27dec4d35d1d14763c /src | |
| parent | 248529ee6842f65526ce313992185450a55867fe (diff) | |
| download | qxmpp-1bd3eecff28c2b0d080102c26fd89dc3f56b4e09.tar.gz | |
catch socket errors for outgoing S2S connections, otherwise they never get terminated
Diffstat (limited to 'src')
| -rw-r--r-- | src/QXmppOutgoingServer.cpp | 10 | ||||
| -rw-r--r-- | src/QXmppOutgoingServer.h | 3 |
2 files changed, 13 insertions, 0 deletions
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<QSslError> &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 <QAbstractSocket> + #include "QXmppStream.h" class QSslError; @@ -68,6 +70,7 @@ private slots: void connectToHost(const QXmppSrvInfo &serviceInfo); void sendDialback(); void slotSslErrors(const QList<QSslError> &errors); + void socketError(QAbstractSocket::SocketError error); private: Q_DISABLE_COPY(QXmppOutgoingServer) |
