From 213914e1cee686fa388a51eb9689e5bf3a3e36d7 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Thu, 24 Mar 2016 01:14:48 +0300 Subject: [PATCH] Fix undefined behaviour in WiFiServer::setNoDelay (#1695) --- libraries/ESP8266WiFi/src/WiFiServer.cpp | 13 +++---------- libraries/ESP8266WiFi/src/WiFiServer.h | 1 + 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/libraries/ESP8266WiFi/src/WiFiServer.cpp b/libraries/ESP8266WiFi/src/WiFiServer.cpp index c58a91476..868c1c561 100644 --- a/libraries/ESP8266WiFi/src/WiFiServer.cpp +++ b/libraries/ESP8266WiFi/src/WiFiServer.cpp @@ -81,19 +81,11 @@ void WiFiServer::begin() { } void WiFiServer::setNoDelay(bool nodelay) { - if (!_pcb) - return; - - if (nodelay) - tcp_nagle_disable(_pcb); - else - tcp_nagle_enable(_pcb); + _noDelay = nodelay; } bool WiFiServer::getNoDelay() { - if (!_pcb) - return false; - return tcp_nagle_disabled(_pcb); + return _noDelay; } bool WiFiServer::hasClient() { @@ -106,6 +98,7 @@ WiFiClient WiFiServer::available(byte* status) { if (_unclaimed) { WiFiClient result(_unclaimed); _unclaimed = _unclaimed->next(); + result.setNoDelay(_noDelay); DEBUGV("WS:av\r\n"); return result; } diff --git a/libraries/ESP8266WiFi/src/WiFiServer.h b/libraries/ESP8266WiFi/src/WiFiServer.h index 424a2331d..be0604916 100644 --- a/libraries/ESP8266WiFi/src/WiFiServer.h +++ b/libraries/ESP8266WiFi/src/WiFiServer.h @@ -42,6 +42,7 @@ private: ClientContext* _unclaimed; ClientContext* _discarded; + bool _noDelay = false; public: WiFiServer(IPAddress addr, uint16_t port);