From 97a2cc133e96549841e4ec9c2f3534f734d1cb19 Mon Sep 17 00:00:00 2001 From: PaSaSaP Date: Sat, 25 Jun 2022 10:20:01 +0200 Subject: [PATCH] Add timeout parameter to ESP8266webServerTemplate::_uploadReadByte --- libraries/ESP8266WebServer/src/ESP8266WebServer.h | 2 +- libraries/ESP8266WebServer/src/Parsing-impl.h | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/libraries/ESP8266WebServer/src/ESP8266WebServer.h b/libraries/ESP8266WebServer/src/ESP8266WebServer.h index e0dba27a90..36bc2f6038 100644 --- a/libraries/ESP8266WebServer/src/ESP8266WebServer.h +++ b/libraries/ESP8266WebServer/src/ESP8266WebServer.h @@ -290,7 +290,7 @@ class ESP8266WebServerTemplate bool _parseForm(ClientType& client, const String& boundary, uint32_t len); bool _parseFormUploadAborted(); void _uploadWriteByte(uint8_t b); - int _uploadReadByte(ClientType& client); + int _uploadReadByte(ClientType& client, unsigned long timeout_ms = HTTP_MAX_DATA_WAIT); void _prepareHeader(String& response, int code, const char* content_type, size_t contentLength); bool _collectHeader(const char* headerName, const char* headerValue); diff --git a/libraries/ESP8266WebServer/src/Parsing-impl.h b/libraries/ESP8266WebServer/src/Parsing-impl.h index 83762a03c2..e6935406ac 100644 --- a/libraries/ESP8266WebServer/src/Parsing-impl.h +++ b/libraries/ESP8266WebServer/src/Parsing-impl.h @@ -333,10 +333,12 @@ void ESP8266WebServerTemplate::_uploadWriteByte(uint8_t b){ } template -int ESP8266WebServerTemplate::_uploadReadByte(ClientType& client){ +int ESP8266WebServerTemplate::_uploadReadByte(ClientType& client, unsigned long timeout_ms){ int res = client.read(); if(res == -1){ - while(!client.available() && client.connected()) + timeout_ms *= 1000; + long curr_time = system_get_time(); + while(!client.available() && client.connected() && system_get_time() - curr_time < timeout_ms) yield(); res = client.read(); }