diff --git a/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp b/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp index 3490e2c1dd..f417ef3dee 100644 --- a/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp +++ b/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp @@ -633,6 +633,7 @@ extern "C" int __ax_port_read(int fd, uint8_t* buffer, size_t count) } extern "C" void ax_port_read() __attribute__ ((weak, alias("__ax_port_read"))); +uint8_t ax_port_write_retries = 0; extern "C" int __ax_port_write(int fd, uint8_t* buffer, size_t count) { ClientContext* _client = SSLContext::getIOContext(fd); @@ -643,7 +644,15 @@ extern "C" int __ax_port_write(int fd, uint8_t* buffer, size_t count) size_t cb = _client->write(buffer, count); if (cb != count) { - errno = EAGAIN; + if (++ax_port_write_retries > 0x19) { + DEBUGV("ssl_write: Exceeded max write retries"); + _client->close(); + ax_port_write_retries = 0; + errno = ENOTCONN; + } + else errno = EAGAIN; + } else { + ax_port_write_retries = 0; } return cb; }