|
2 | 2 |
|
3 | 3 | AsyncMqttClient::AsyncMqttClient()
|
4 | 4 | : _connected(false)
|
5 |
| -, _connectPacketNotEnoughSpace(false) |
6 | 5 | , _disconnectOnPoll(false)
|
7 |
| -, _tlsBadFingerprint(false) |
| 6 | +, _disconnectReason(AsyncMqttClientDisconnectReason::TCP_DISCONNECTED) |
8 | 7 | , _lastClientActivity(0)
|
9 | 8 | , _lastServerActivity(0)
|
10 | 9 | , _lastPingRequestTime(0)
|
@@ -159,8 +158,7 @@ void AsyncMqttClient::_clear() {
|
159 | 158 | _lastPingRequestTime = 0;
|
160 | 159 | _connected = false;
|
161 | 160 | _disconnectOnPoll = false;
|
162 |
| - _connectPacketNotEnoughSpace = false; |
163 |
| - _tlsBadFingerprint = false; |
| 161 | + _disconnectReason = AsyncMqttClientDisconnectReason::TCP_DISCONNECTED; // reset any previous |
164 | 162 | _freeCurrentParsedPacket();
|
165 | 163 |
|
166 | 164 | _pendingPubRels.clear();
|
@@ -190,7 +188,7 @@ void AsyncMqttClient::_onConnect(AsyncClient* client) {
|
190 | 188 | }
|
191 | 189 |
|
192 | 190 | if (!sslFoundFingerprint) {
|
193 |
| - _tlsBadFingerprint = true; |
| 191 | + _disconnectReason = AsyncMqttClientDisconnectReason::TLS_BAD_FINGERPRINT; |
194 | 192 | _client.close(true);
|
195 | 193 | return;
|
196 | 194 | }
|
@@ -304,7 +302,7 @@ void AsyncMqttClient::_onConnect(AsyncClient* client) {
|
304 | 302 |
|
305 | 303 | SEMAPHORE_TAKE();
|
306 | 304 | if (_client.space() < neededSpace) {
|
307 |
| - _connectPacketNotEnoughSpace = true; |
| 305 | + _disconnectReason = AsyncMqttClientDisconnectReason::ESP8266_NOT_ENOUGH_SPACE; |
308 | 306 | _client.close(true);
|
309 | 307 | SEMAPHORE_GIVE();
|
310 | 308 | return;
|
@@ -354,16 +352,7 @@ void AsyncMqttClient::_onConnect(AsyncClient* client) {
|
354 | 352 |
|
355 | 353 | void AsyncMqttClient::_onDisconnect(AsyncClient* client) {
|
356 | 354 | (void)client;
|
357 |
| - AsyncMqttClientDisconnectReason reason; |
358 |
| - |
359 |
| - if (_connectPacketNotEnoughSpace) { |
360 |
| - reason = AsyncMqttClientDisconnectReason::ESP8266_NOT_ENOUGH_SPACE; |
361 |
| - } else if (_tlsBadFingerprint) { |
362 |
| - reason = AsyncMqttClientDisconnectReason::TLS_BAD_FINGERPRINT; |
363 |
| - } else { |
364 |
| - reason = AsyncMqttClientDisconnectReason::TCP_DISCONNECTED; |
365 |
| - } |
366 |
| - |
| 355 | + AsyncMqttClientDisconnectReason reason = _disconnectReason; |
367 | 356 | _clear();
|
368 | 357 |
|
369 | 358 | for (auto callback : _onDisconnectUserCallbacks) callback(reason);
|
@@ -501,6 +490,7 @@ void AsyncMqttClient::_onConnAck(bool sessionPresent, uint8_t connectReturnCode)
|
501 | 490 | for (auto callback : _onConnectUserCallbacks) callback(sessionPresent);
|
502 | 491 | } else {
|
503 | 492 | // Callbacks are handled by the ondisconnect function which is called from the AsyncTcp lib
|
| 493 | + _disconnectReason = static_cast<AsyncMqttClientDisconnectReason>(connectReturnCode); |
504 | 494 | }
|
505 | 495 | }
|
506 | 496 |
|
|
0 commit comments