diff options
author | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2018-11-17 03:02:02 +0100 |
---|---|---|
committer | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2018-11-17 03:02:02 +0100 |
commit | c493980cc726de4a40782476433b463154d27700 (patch) | |
tree | 97ad44da523f178eccc2c72f263cfcd3910ed61d | |
parent | bd073101acc9d30e0067c9c75d5cdab7511deedf (diff) | |
parent | a9e5d36f31878e6a7c1c79137b466a92168134ec (diff) |
Merge remote-tracking branch 'origin/5.12' into dev
Change-Id: I495e1c269a8fec76f83229ae4900cf027dac85fc
-rw-r--r-- | src/mqtt/qmqttclient.cpp | 5 | ||||
-rw-r--r-- | src/mqtt/qmqttconnection.cpp | 9 | ||||
-rw-r--r-- | src/mqtt/qmqttconnection_p.h | 1 |
3 files changed, 15 insertions, 0 deletions
diff --git a/src/mqtt/qmqttclient.cpp b/src/mqtt/qmqttclient.cpp index fd6ca5d..0ea0f1e 100644 --- a/src/mqtt/qmqttclient.cpp +++ b/src/mqtt/qmqttclient.cpp @@ -521,6 +521,11 @@ void QMqttClient::connectToHost(bool encrypted, const QString &sslPeerName) { Q_D(QMqttClient); + if (state() == QMqttClient::Connecting) { + qCDebug(lcMqttClient) << "Connection request currently ongoing."; + return; + } + if (state() == QMqttClient::Connected) { qCDebug(lcMqttClient) << "Already connected to a broker. Rejecting connection request."; return; diff --git a/src/mqtt/qmqttconnection.cpp b/src/mqtt/qmqttconnection.cpp index fc27a24..f1ad7ec 100644 --- a/src/mqtt/qmqttconnection.cpp +++ b/src/mqtt/qmqttconnection.cpp @@ -162,6 +162,9 @@ bool QMqttConnection::ensureTransport(bool createSecureIfNeeded) connect(socket, &QAbstractSocket::connected, this, &QMqttConnection::transportConnectionEstablished); connect(socket, &QAbstractSocket::disconnected, this, &QMqttConnection::transportConnectionClosed); + connect(socket, static_cast<void (QAbstractSocket::*)(QAbstractSocket::SocketError)>(&QAbstractSocket::error), + this, &QMqttConnection::transportError); + connect(m_transport, &QIODevice::aboutToClose, this, &QMqttConnection::transportConnectionClosed); connect(m_transport, &QIODevice::readyRead, this, &QMqttConnection::transportReadReady); return true; @@ -681,6 +684,12 @@ void QMqttConnection::transportReadReady() processData(); } +void QMqttConnection::transportError(QAbstractSocket::SocketError e) +{ + qCDebug(lcMqttConnection) << Q_FUNC_INFO << e; + closeConnection(QMqttClient::TransportInvalid); +} + void QMqttConnection::readBuffer(char *data, quint64 size) { memcpy(data, m_readBuffer.constData() + m_readPosition, size); diff --git a/src/mqtt/qmqttconnection_p.h b/src/mqtt/qmqttconnection_p.h index cfe1641..84dc875 100644 --- a/src/mqtt/qmqttconnection_p.h +++ b/src/mqtt/qmqttconnection_p.h @@ -100,6 +100,7 @@ public Q_SLOTS: void transportConnectionEstablished(); void transportConnectionClosed(); void transportReadReady(); + void transportError(QAbstractSocket::SocketError e); public: QIODevice *m_transport{nullptr}; |