aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2011-03-16 18:28:22 +0000
committerJeremy Lainé <jeremy.laine@m4x.org>2011-03-16 18:28:22 +0000
commit1bd3eecff28c2b0d080102c26fd89dc3f56b4e09 (patch)
tree9e01e3ed2ea90c3401542d27dec4d35d1d14763c /src
parent248529ee6842f65526ce313992185450a55867fe (diff)
downloadqxmpp-1bd3eecff28c2b0d080102c26fd89dc3f56b4e09.tar.gz
catch socket errors for outgoing S2S connections, otherwise they never get terminated
Diffstat (limited to 'src')
-rw-r--r--src/QXmppOutgoingServer.cpp10
-rw-r--r--src/QXmppOutgoingServer.h3
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)