diff --git a/libraries/WiFi/src/WiFiClient.cpp b/libraries/WiFi/src/WiFiClient.cpp index b1b6e72c..d6f27354 100644 --- a/libraries/WiFi/src/WiFiClient.cpp +++ b/libraries/WiFi/src/WiFiClient.cpp @@ -237,6 +237,20 @@ int WiFiClient::read(uint8_t *buf, size_t size) return res; } +int WiFiClient::peek() +{ + if(!available()) { + return -1; + } + uint8_t data = 0; + int res = recv(fd(), &data, 1, MSG_PEEK); + if(res < 0 && errno != EWOULDBLOCK) { + log_e("%d", errno); + stop(); + } + return data; +} + int WiFiClient::available() { if(!_connected) { diff --git a/libraries/WiFi/src/WiFiClient.h b/libraries/WiFi/src/WiFiClient.h index 5b10db7d..5472c74d 100644 --- a/libraries/WiFi/src/WiFiClient.h +++ b/libraries/WiFi/src/WiFiClient.h @@ -47,10 +47,7 @@ public: int available(); int read(); int read(uint8_t *buf, size_t size); - int peek() - { - return -1; - } + int peek(); void flush(); void stop(); uint8_t connected();