From 5f3ce9ee2aa8aa98c1111c91002daa32e571c998 Mon Sep 17 00:00:00 2001 From: david gauchard Date: Sat, 27 Feb 2021 23:20:32 +0100 Subject: [PATCH 1/2] rename ClientContext::wait_until_sent() to wait_until_acked() While looking at #6348 and #6369, and after checking into lwIP sources, it appears that the tests in ClientContext::wait_until_sent() effectively wait for all acks on current output buffer. Comments are added. --- libraries/ESP8266WiFi/src/WiFiClient.cpp | 2 +- libraries/ESP8266WiFi/src/include/ClientContext.h | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/libraries/ESP8266WiFi/src/WiFiClient.cpp b/libraries/ESP8266WiFi/src/WiFiClient.cpp index 5aa09b8874..3f985cf36a 100644 --- a/libraries/ESP8266WiFi/src/WiFiClient.cpp +++ b/libraries/ESP8266WiFi/src/WiFiClient.cpp @@ -304,7 +304,7 @@ bool WiFiClient::flush(unsigned int maxWaitMs) if (maxWaitMs == 0) maxWaitMs = WIFICLIENT_MAX_FLUSH_WAIT_MS; - return _client->wait_until_sent(maxWaitMs); + return _client->wait_until_acked(maxWaitMs); } bool WiFiClient::stop(unsigned int maxWaitMs) diff --git a/libraries/ESP8266WiFi/src/include/ClientContext.h b/libraries/ESP8266WiFi/src/include/ClientContext.h index 8095e402a2..9c35279bb7 100644 --- a/libraries/ESP8266WiFi/src/include/ClientContext.h +++ b/libraries/ESP8266WiFi/src/include/ClientContext.h @@ -314,7 +314,7 @@ class ClientContext _rx_buf_offset = 0; } - bool wait_until_sent(int max_wait_ms = WIFICLIENT_MAX_FLUSH_WAIT_MS) + bool wait_until_acked(int max_wait_ms = WIFICLIENT_MAX_FLUSH_WAIT_MS) { // https://github.com/esp8266/Arduino/pull/3967#pullrequestreview-83451496 // option 1 done @@ -351,6 +351,8 @@ class ClientContext delay(0); // from sys or os context if ((state() != ESTABLISHED) || (sndbuf == TCP_SND_BUF)) { + // peer has closed or all bytes are sent and acked + // ((TCP_SND_BUF-sndbuf) is the amount of un-acked bytes) break; } } @@ -484,7 +486,7 @@ class ClientContext } while(true); if (_sync) - wait_until_sent(); + wait_until_acked(); return _written; } From 2fc53fe7e68c1341b67a848811e11518ea5e88f3 Mon Sep 17 00:00:00 2001 From: david gauchard Date: Sat, 27 Feb 2021 23:30:05 +0100 Subject: [PATCH 2/2] host tests counterpart --- tests/host/common/include/ClientContext.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/host/common/include/ClientContext.h b/tests/host/common/include/ClientContext.h index 31366ac0dd..02977457c8 100644 --- a/tests/host/common/include/ClientContext.h +++ b/tests/host/common/include/ClientContext.h @@ -211,7 +211,7 @@ class ClientContext mockverbose("TODO: ClientContext::discard_received()\n"); } - bool wait_until_sent(int max_wait_ms = WIFICLIENT_MAX_FLUSH_WAIT_MS) + bool wait_until_acked(int max_wait_ms = WIFICLIENT_MAX_FLUSH_WAIT_MS) { (void)max_wait_ms; return true;