From c76c07a3f42df3fa86aebe5d5b07742bfae77ab2 Mon Sep 17 00:00:00 2001 From: Mark Walker Date: Fri, 27 Jan 2023 12:10:11 -0800 Subject: [PATCH] report authorization failures correctly also, fix mqtt connect status error printing --- src/AdafruitIO.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/AdafruitIO.cpp b/src/AdafruitIO.cpp index a470056..4bfb55d 100644 --- a/src/AdafruitIO.cpp +++ b/src/AdafruitIO.cpp @@ -428,9 +428,7 @@ char *AdafruitIO::userAgent() { aio_status_t AdafruitIO::mqttStatus(bool fail_fast) { // if the connection failed, // return so we don't hammer IO - if (_status == AIO_CONNECT_FAILED) { - AIO_ERROR_PRINT("mqttStatus() failed to connect"); - AIO_ERROR_PRINTLN(_mqtt->connectErrorString(_status)); + if (_status == AIO_CONNECT_FAILED || _status == AIO_AUTH_FAILED) { return _status; } @@ -441,14 +439,20 @@ aio_status_t AdafruitIO::mqttStatus(bool fail_fast) { if (_last_mqtt_connect == 0 || millis() - _last_mqtt_connect > AIO_THROTTLE_RECONNECT_INTERVAL) { _last_mqtt_connect = millis(); - switch (_mqtt->connect(_username, _key)) { + int connect_status = _mqtt->connect(_username, _key); + if (connect_status != 0) { + AIO_ERROR_PRINT("_mqtt->connect() failed to connect: "); + AIO_ERROR_PRINTLN(_mqtt->connectErrorString(connect_status)); + } + switch (connect_status) { case 0: return AIO_CONNECTED; case 1: // invalid mqtt protocol case 2: // client id rejected case 4: // malformed user/pass - case 5: // unauthorized return AIO_CONNECT_FAILED; + case 5: // unauthorized + return AIO_AUTH_FAILED; case 3: // mqtt service unavailable case 6: // throttled case 7: // banned -> all MQTT bans are temporary, so eventual retry is