summaryrefslogtreecommitdiffstats
path: root/src/mqtt/qmqttclient.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mqtt/qmqttclient.cpp')
-rw-r--r--src/mqtt/qmqttclient.cpp13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/mqtt/qmqttclient.cpp b/src/mqtt/qmqttclient.cpp
index 23fb00f..8cf1661 100644
--- a/src/mqtt/qmqttclient.cpp
+++ b/src/mqtt/qmqttclient.cpp
@@ -443,10 +443,17 @@ void QMqttClient::disconnectFromHost()
{
Q_D(QMqttClient);
- if (d->m_connection.internalState() != QMqttConnection::BrokerConnected)
+ switch (d->m_connection.internalState()) {
+ case QMqttConnection::BrokerConnected:
+ d->m_connection.sendControlDisconnect();
+ case QMqttConnection::BrokerDisconnected:
return;
-
- d->m_connection.sendControlDisconnect();
+ case QMqttConnection::BrokerConnecting:
+ case QMqttConnection::BrokerWaitForConnectAck:
+ default:
+ d->m_connection.m_transport->close();
+ break;
+ }
}
QMqttClient::ClientState QMqttClient::state() const