From f4c37bb2b6fa7c627acd80282304db4626f59941 Mon Sep 17 00:00:00 2001 From: giulcioffi Date: Tue, 5 Jan 2021 10:25:32 +0100 Subject: [PATCH] Retry send up to 5 times, then close socket --- src/WiFiClient.cpp | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/src/WiFiClient.cpp b/src/WiFiClient.cpp index bfc21ec7..2d75cdc0 100644 --- a/src/WiFiClient.cpp +++ b/src/WiFiClient.cpp @@ -207,19 +207,29 @@ size_t WiFiClient::write(const uint8_t *buf, size_t size) { if (size==0) { setWriteError(); - return 0; + return 0; } - size_t written = ServerDrv::sendData(_sock, buf, size); - if (!written) - { - setWriteError(); - return 0; + bool success = false; + size_t written = 0; + for (int i=0; i<5; i++) { + written = ServerDrv::sendData(_sock, buf, size); + if (written) { + success = true; + break; + } } - if (!ServerDrv::checkDataSent(_sock)) - { - setWriteError(); - return 0; + if (success) { + if (!ServerDrv::checkDataSent(_sock)) + { + setWriteError(); + return 0; + } + } else { + // close socket + ServerDrv::stopClient(_sock); + setWriteError(); + return 0; } return written;