From 9f6481ed5335bfac026dda3d788bc29d8d2bb196 Mon Sep 17 00:00:00 2001 From: David Gauchard Date: Wed, 17 Oct 2018 12:03:39 +0200 Subject: [PATCH 1/2] fix: WiFiClient::flush() yields but can be called from events --- libraries/ESP8266WiFi/src/include/ClientContext.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libraries/ESP8266WiFi/src/include/ClientContext.h b/libraries/ESP8266WiFi/src/include/ClientContext.h index ef4a692edf..1d35b386b6 100644 --- a/libraries/ESP8266WiFi/src/include/ClientContext.h +++ b/libraries/ESP8266WiFi/src/include/ClientContext.h @@ -331,9 +331,11 @@ class ClientContext prevsndbuf = sndbuf; // We just sent a bit, move timeout forward last_sent = millis(); - } - yield(); + // yield because we are staying longer + // (only if possible because we can be called from events) + esp_yield(); + } if ((state() != ESTABLISHED) || (sndbuf == TCP_SND_BUF)) { break; From f673fd753f26bc760aee89f22e9552f985a1445f Mon Sep 17 00:00:00 2001 From: david gauchard Date: Wed, 17 Oct 2018 22:04:27 +0200 Subject: [PATCH 2/2] yield every loop --- libraries/ESP8266WiFi/src/include/ClientContext.h | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/libraries/ESP8266WiFi/src/include/ClientContext.h b/libraries/ESP8266WiFi/src/include/ClientContext.h index 1d35b386b6..8ec2329e32 100644 --- a/libraries/ESP8266WiFi/src/include/ClientContext.h +++ b/libraries/ESP8266WiFi/src/include/ClientContext.h @@ -331,12 +331,10 @@ class ClientContext prevsndbuf = sndbuf; // We just sent a bit, move timeout forward last_sent = millis(); - - // yield because we are staying longer - // (only if possible because we can be called from events) - esp_yield(); } + esp_yield(); // from sys or os context + if ((state() != ESTABLISHED) || (sndbuf == TCP_SND_BUF)) { break; }