From f2f1fad298db9a94151268e4de2bf4f677542805 Mon Sep 17 00:00:00 2001 From: ficeto Date: Tue, 12 May 2015 19:25:37 +0300 Subject: [PATCH] add TCP_NODELAY control --- libraries/ESP8266WiFi/src/WiFiServer.cpp | 11 +++++++++++ libraries/ESP8266WiFi/src/WiFiServer.h | 2 ++ libraries/ESP8266WiFi/src/include/ClientContext.h | 13 ++++++++++++- 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/libraries/ESP8266WiFi/src/WiFiServer.cpp b/libraries/ESP8266WiFi/src/WiFiServer.cpp index 1ed2a64c1..69ad4ff81 100644 --- a/libraries/ESP8266WiFi/src/WiFiServer.cpp +++ b/libraries/ESP8266WiFi/src/WiFiServer.cpp @@ -73,6 +73,17 @@ void WiFiServer::begin() tcp_arg(listen_pcb, (void*) this); } +void WiFiServer::setNoDelay(bool nodelay){ + if(!_pcb) return; + if(nodelay) tcp_nagle_disable(_pcb); + else tcp_nagle_enable(_pcb); +} + +bool WiFiServer::getNoDelay(){ + if(!_pcb) return false; + return tcp_nagle_disabled(_pcb); +} + extern "C" uint32_t esp_micros_at_task_start(); bool WiFiServer::hasClient(){ diff --git a/libraries/ESP8266WiFi/src/WiFiServer.h b/libraries/ESP8266WiFi/src/WiFiServer.h index 7e7b0491b..3dd02da7d 100644 --- a/libraries/ESP8266WiFi/src/WiFiServer.h +++ b/libraries/ESP8266WiFi/src/WiFiServer.h @@ -46,6 +46,8 @@ public: WiFiClient available(uint8_t* status = NULL); bool hasClient(); void begin(); + void setNoDelay(bool nodelay); + bool getNoDelay(); virtual size_t write(uint8_t); virtual size_t write(const uint8_t *buf, size_t size); uint8_t status(); diff --git a/libraries/ESP8266WiFi/src/include/ClientContext.h b/libraries/ESP8266WiFi/src/include/ClientContext.h index 0001ef08b..79c68127f 100644 --- a/libraries/ESP8266WiFi/src/include/ClientContext.h +++ b/libraries/ESP8266WiFi/src/include/ClientContext.h @@ -98,7 +98,18 @@ class ClientContext { delete this; } } - + + void setNoDelay(bool nodelay){ + if(!_pcb) return; + if(nodelay) tcp_nagle_disable(_pcb); + else tcp_nagle_enable(_pcb); + } + + bool getNoDelay(){ + if(!_pcb) return false; + return tcp_nagle_disabled(_pcb); + } + uint32_t getRemoteAddress() { if(!_pcb) return 0;