Skip to content

Commit 1b9e3f2

Browse files
Fixes esp8266#3537
1 parent 4897e00 commit 1b9e3f2

File tree

1 file changed

+12
-5
lines changed

1 file changed

+12
-5
lines changed

libraries/ESP8266WiFi/src/WiFiClientSecure.cpp

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -605,17 +605,24 @@ extern "C" int __ax_port_read(int fd, uint8_t* buffer, size_t count)
605605
}
606606
extern "C" void ax_port_read() __attribute__ ((weak, alias("__ax_port_read")));
607607

608-
extern "C" int __ax_port_write(int fd, uint8_t* buffer, size_t count)
609-
{
608+
uint8_t ax_port_write_retries = 0;
609+
extern "C" int ax_port_write(int fd, uint8_t* buffer, size_t count) {
610610
ClientContext* _client = SSLContext::getIOContext(fd);
611611
if (!_client || _client->state() != ESTABLISHED) {
612612
errno = EIO;
613613
return -1;
614614
}
615-
616-
size_t cb = _client->write(buffer, count);
615+
size_t cb = _client->write((const char*) buffer, count);
617616
if (cb != count) {
618-
errno = EAGAIN;
617+
if (++ax_port_write_retries > 0x19) {
618+
DEBUGV("ssl_write: Exceeded max write retries");
619+
_client->close();
620+
ax_port_write_retries = 0;
621+
errno = ENOTCONN;
622+
}
623+
else errno = EAGAIN;
624+
} else {
625+
ax_port_write_retries = 0;
619626
}
620627
return cb;
621628
}

0 commit comments

Comments
 (0)