diff --git a/libraries/ESP8266WiFi/src/WiFiClient.cpp b/libraries/ESP8266WiFi/src/WiFiClient.cpp index 7a1c39e128..78df4bf85d 100644 --- a/libraries/ESP8266WiFi/src/WiFiClient.cpp +++ b/libraries/ESP8266WiFi/src/WiFiClient.cpp @@ -40,6 +40,7 @@ extern "C" #include "lwip/netif.h" #include #include "c_types.h" +#include uint16_t WiFiClient::_localPort = 0; @@ -212,7 +213,8 @@ size_t WiFiClient::write(const uint8_t *buf, size_t size) return 0; } _client->setTimeout(_timeout); - return _client->write(buf, size); + StreamConstPtr ptr(buf, size); + return _client->write(ptr); } size_t WiFiClient::write(Stream& stream, size_t unused) @@ -227,8 +229,12 @@ size_t WiFiClient::write(Stream& stream) { return 0; } - _client->setTimeout(_timeout); - return _client->write(stream); + if (stream.hasPeekBufferAPI()) + { + _client->setTimeout(_timeout); + return _client->write(stream); + } + return stream.sendAvailable(this); } size_t WiFiClient::write_P(PGM_P buf, size_t size) @@ -238,7 +244,8 @@ size_t WiFiClient::write_P(PGM_P buf, size_t size) return 0; } _client->setTimeout(_timeout); - return _client->write_P(buf, size); + StreamConstPtr nopeek(buf, size); + return nopeek.sendAll(this); } int WiFiClient::available() diff --git a/libraries/ESP8266WiFi/src/include/ClientContext.h b/libraries/ESP8266WiFi/src/include/ClientContext.h index 9eb81ec295..43ce731de0 100644 --- a/libraries/ESP8266WiFi/src/include/ClientContext.h +++ b/libraries/ESP8266WiFi/src/include/ClientContext.h @@ -31,6 +31,7 @@ extern "C" void esp_schedule(); #include #include +#include bool getDefaultPrivateGlobalSyncValue (); @@ -372,32 +373,15 @@ class ClientContext return _pcb->state; } - size_t write(const uint8_t* data, size_t size) - { - if (!_pcb) { - return 0; - } - StreamConstPtr ptr(data, size); - return _write_from_source(&ptr); - } - size_t write(Stream& stream) { if (!_pcb) { return 0; } + assert(stream.hasPeekBufferAPI()); return _write_from_source(&stream); } - size_t write_P(PGM_P buf, size_t size) - { - if (!_pcb) { - return 0; - } - StreamConstPtr ptr(buf, size); - return _write_from_source(&ptr); - } - void keepAlive (uint16_t idle_sec = TCP_DEFAULT_KEEPALIVE_IDLE_SEC, uint16_t intv_sec = TCP_DEFAULT_KEEPALIVE_INTERVAL_SEC, uint8_t count = TCP_DEFAULT_KEEPALIVE_COUNT) { if (idle_sec && intv_sec && count) { @@ -504,7 +488,6 @@ class ClientContext // Give scheduled functions a chance to run (e.g. Ethernet uses recurrent) delay(1); // will resume on timeout or when _write_some_from_cb or _notify_error fires - } _send_waiting = false; } while(true); pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy