|
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