From 77428baddcad5b3057314c0baa35f21be2a7eedf Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Sun, 15 Nov 2015 22:35:38 +0300 Subject: [PATCH] WiFiClientSecure rx overflow fixes - Increase plaintext rx buffer size to 4096 - Request more data from axtls only when rx buffer is empty --- libraries/ESP8266WiFi/src/WiFiClientSecure.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp b/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp index 749439b88..3e06cf8b3 100644 --- a/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp +++ b/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp @@ -50,7 +50,7 @@ extern "C" #define SSL_DEBUG_OPTS 0 #endif -#define SSL_RX_BUF_SIZE 1536 +#define SSL_RX_BUF_SIZE 4096 class SSLContext { public: @@ -92,10 +92,12 @@ public: } int read(uint8_t* dst, size_t size) { - if (size > _rxbuf->getSize()) { + if (!_rxbuf->getSize()) { _readAll(); } - return _rxbuf->read(reinterpret_cast(dst), size); + size_t available = _rxbuf->getSize(); + size_t will_read = (available < size) ? available : size; + return _rxbuf->read(reinterpret_cast(dst), will_read); } int read() {