diff --git a/libraries/WiFi/src/WiFiClient.cpp b/libraries/WiFi/src/WiFiClient.cpp index b1b6e72ce9e4d468f93123b8ef172ecbe19caf1f..d6f27354c723fb618ae5247ce4263ddd86ff4aee 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 5b10db7dcad03e6a0360f6c9ee85c8ae36c91808..5472c74ddb50130ebde142cdb296be4745350285 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();