From e8baea464f1eb86540ed0403cdbb0efad24eded8 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Sat, 5 Apr 2025 00:04:36 +0200 Subject: [PATCH] TLS increase timeout and fix crash (#23249) --- CHANGELOG.md | 1 + .../tls_mini/src/WiFiClientSecureLightBearSSL.cpp | 9 +++++++-- lib/lib_ssl/tls_mini/src/WiFiClientSecureLightBearSSL.h | 5 +++-- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1cbbbe8d3..87e6dda10 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ All notable changes to this project will be documented in this file. ### Fixed - INA226 driver fixes (#23197) +- TLS increase timeout and fix crash ### Removed diff --git a/lib/lib_ssl/tls_mini/src/WiFiClientSecureLightBearSSL.cpp b/lib/lib_ssl/tls_mini/src/WiFiClientSecureLightBearSSL.cpp index e21444d84..c11acaec2 100755 --- a/lib/lib_ssl/tls_mini/src/WiFiClientSecureLightBearSSL.cpp +++ b/lib/lib_ssl/tls_mini/src/WiFiClientSecureLightBearSSL.cpp @@ -303,7 +303,9 @@ int WiFiClientSecure_light::connect(IPAddress ip, uint16_t port, int32_t timeout setLastError(ERR_TCP_CONNECT); return 0; } - return _connectSSL(_domain.isEmpty() ? nullptr : _domain.c_str()); + bool success = _connectSSL(_domain.isEmpty() ? nullptr : _domain.c_str()); + if (!success) { stop(); } + return success; } #else // ESP32 int WiFiClientSecure_light::connect(IPAddress ip, uint16_t port) { @@ -313,7 +315,9 @@ int WiFiClientSecure_light::connect(IPAddress ip, uint16_t port) { setLastError(ERR_TCP_CONNECT); return 0; } - return _connectSSL(_domain.isEmpty() ? nullptr : _domain.c_str()); + bool success = _connectSSL(_domain.isEmpty() ? nullptr : _domain.c_str()); + if (!success) { stop(); } + return success; } #endif @@ -570,6 +574,7 @@ int WiFiClientSecure_light::_run_until(unsigned target, bool blocking) { if (((int32_t)(millis() - (t + this->_loopTimeout)) >= 0)){ DEBUG_BSSL("_run_until: Timeout\n"); + setLastError(ERR_TLS_TIMEOUT); return -1; } diff --git a/lib/lib_ssl/tls_mini/src/WiFiClientSecureLightBearSSL.h b/lib/lib_ssl/tls_mini/src/WiFiClientSecureLightBearSSL.h index 8ba7a33ba..3cbbcc67e 100755 --- a/lib/lib_ssl/tls_mini/src/WiFiClientSecureLightBearSSL.h +++ b/lib/lib_ssl/tls_mini/src/WiFiClientSecureLightBearSSL.h @@ -137,7 +137,7 @@ class WiFiClientSecure_light : public WiFiClient { } private: - uint32_t _loopTimeout=5000; + uint32_t _loopTimeout=10000; void _clear(); bool _ctx_present; std::shared_ptr _sc; @@ -192,7 +192,8 @@ class WiFiClientSecure_light : public WiFiClient { #define ERR_CANT_RESOLVE_IP -1001 #define ERR_TCP_CONNECT -1002 // #define ERR_MISSING_EC_KEY -1003 // deprecated, AWS IoT is not called if the private key is not present -#define ERR_MISSING_CA -1004 +// #define ERR_MISSING_CA -1004 // deprecated +#define ERR_TLS_TIMEOUT -1005 // For reference, BearSSL error codes: // #define BR_ERR_OK 0