From f3cbd721cba560f19f94d1400bf9ef3701dd0006 Mon Sep 17 00:00:00 2001 From: brentru Date: Tue, 1 Oct 2019 13:56:47 -0400 Subject: [PATCH] add a handshake timeout, stop() should free the new clientCr and clientKey --- arduino/libraries/WiFi/src/WiFiSSLClient.cpp | 10 ++++++++-- arduino/libraries/WiFi/src/WiFiSSLClient.h | 2 ++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/arduino/libraries/WiFi/src/WiFiSSLClient.cpp b/arduino/libraries/WiFi/src/WiFiSSLClient.cpp index 1e2f0a0..be95438 100644 --- a/arduino/libraries/WiFi/src/WiFiSSLClient.cpp +++ b/arduino/libraries/WiFi/src/WiFiSSLClient.cpp @@ -269,11 +269,15 @@ void WiFiSSLClient::setCertificate(const char *client_ca) _cert = client_ca; } -void WiFiSSLClient:: setPrivateKey(const char *private_key) +void WiFiSSLClient::setPrivateKey(const char *private_key) { _private_key = private_key; } +void WiFiSSLClient::setHandshakeTimeout(unsigned long handshake_timeout) +{ + handshake_timeout = handshake_timeout * 1000; +} void WiFiSSLClient::flush() { @@ -283,10 +287,12 @@ void WiFiSSLClient::stop() { synchronized { if (_netContext.fd > 0) { - mbedtls_ssl_session_reset(&_sslContext); + mbedtls_ssl_session_reset(&_sslContext); mbedtls_net_free(&_netContext); mbedtls_x509_crt_free(&_caCrt); + mbedtls_x509_crt_free(&_clientCrt); + mbedtls_pk_free(&_clientKey); mbedtls_entropy_free(&_entropyContext); mbedtls_ssl_config_free(&_sslConfig); mbedtls_ctr_drbg_free(&_ctrDrbgContext); diff --git a/arduino/libraries/WiFi/src/WiFiSSLClient.h b/arduino/libraries/WiFi/src/WiFiSSLClient.h index ce8ed57..70979fa 100644 --- a/arduino/libraries/WiFi/src/WiFiSSLClient.h +++ b/arduino/libraries/WiFi/src/WiFiSSLClient.h @@ -52,6 +52,7 @@ public: virtual operator bool(); virtual void setCertificate(const char *client_ca); virtual void setPrivateKey (const char *private_key); + virtual void setHandshakeTimeout(unsigned long handshake_timeout); // using Print::write; @@ -73,6 +74,7 @@ private: mbedtls_pk_context _clientKey; bool _connected; int _peek; + unsigned long handshake_timeout; SemaphoreHandle_t _mbedMutex; };