From e45712de8022e178ba7e48160d32c9a5d86a3a21 Mon Sep 17 00:00:00 2001 From: david gauchard Date: Wed, 13 Nov 2019 22:56:13 +0100 Subject: [PATCH 1/2] webserver: do not count "plain" in argument list it is still available though --- libraries/ESP8266WebServer/src/ESP8266WebServer-impl.h | 10 ++++++---- libraries/ESP8266WebServer/src/ESP8266WebServer.h | 1 + libraries/ESP8266WebServer/src/Parsing-impl.h | 1 + 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/libraries/ESP8266WebServer/src/ESP8266WebServer-impl.h b/libraries/ESP8266WebServer/src/ESP8266WebServer-impl.h index 1efcf92e5e..1bb6ddefb6 100644 --- a/libraries/ESP8266WebServer/src/ESP8266WebServer-impl.h +++ b/libraries/ESP8266WebServer/src/ESP8266WebServer-impl.h @@ -55,6 +55,7 @@ ESP8266WebServerTemplate::ESP8266WebServerTemplate(IPAddress addr, i , _lastHandler(nullptr) , _currentArgCount(0) , _currentArgs(nullptr) +, _currentArgsHavePlain(0), , _postArgsLen(0) , _postArgs(nullptr) , _headerKeysCount(0) @@ -76,6 +77,7 @@ ESP8266WebServerTemplate::ESP8266WebServerTemplate(int port) , _lastHandler(nullptr) , _currentArgCount(0) , _currentArgs(nullptr) +, _currentArgsHavePlain(0), , _postArgsLen(0) , _postArgs(nullptr) , _headerKeysCount(0) @@ -549,7 +551,7 @@ const String& ESP8266WebServerTemplate::arg(const String& name) cons if ( _postArgs[j].key == name ) return _postArgs[j].value; } - for (int i = 0; i < _currentArgCount; ++i) { + for (int i = 0; i < _currentArgCount + _currentArgsHavePlain; ++i) { if ( _currentArgs[i].key == name ) return _currentArgs[i].value; } @@ -558,14 +560,14 @@ const String& ESP8266WebServerTemplate::arg(const String& name) cons template const String& ESP8266WebServerTemplate::arg(int i) const { - if (i >= 0 && i < _currentArgCount) + if (i >= 0 && i < _currentArgCount + _currentArgsHavePlain) return _currentArgs[i].value; return emptyString; } template const String& ESP8266WebServerTemplate::argName(int i) const { - if (i >= 0 && i < _currentArgCount) + if (i >= 0 && i < _currentArgCount + _currentArgsHavePlain) return _currentArgs[i].key; return emptyString; } @@ -581,7 +583,7 @@ bool ESP8266WebServerTemplate::hasArg(const String& name) const { if (_postArgs[j].key == name) return true; } - for (int i = 0; i < _currentArgCount; ++i) { + for (int i = 0; i < _currentArgCount + _currentArgsHavePlain; ++i) { if (_currentArgs[i].key == name) return true; } diff --git a/libraries/ESP8266WebServer/src/ESP8266WebServer.h b/libraries/ESP8266WebServer/src/ESP8266WebServer.h index 4281ce8636..b1e2ad4971 100644 --- a/libraries/ESP8266WebServer/src/ESP8266WebServer.h +++ b/libraries/ESP8266WebServer/src/ESP8266WebServer.h @@ -191,6 +191,7 @@ class ESP8266WebServerTemplate int _currentArgCount; RequestArgument* _currentArgs; + int _currentArgsHavePlain; std::unique_ptr _currentUpload; int _postArgsLen; RequestArgument* _postArgs; diff --git a/libraries/ESP8266WebServer/src/Parsing-impl.h b/libraries/ESP8266WebServer/src/Parsing-impl.h index decc9c8e0b..57e8b241ae 100644 --- a/libraries/ESP8266WebServer/src/Parsing-impl.h +++ b/libraries/ESP8266WebServer/src/Parsing-impl.h @@ -208,6 +208,7 @@ bool ESP8266WebServerTemplate::_parseRequest(ClientType& client) { RequestArgument& arg = _currentArgs[_currentArgCount++]; arg.key = F("plain"); arg.value = plainBuf; + _currentArgsHavePlain = 1; } } else { // isForm is true // here: content is not yet read (plainBuf is still empty) From cadc52650dcd8332ad18e61fd134da14ea6248e1 Mon Sep 17 00:00:00 2001 From: david gauchard Date: Wed, 13 Nov 2019 23:19:07 +0100 Subject: [PATCH 2/2] fix --- libraries/ESP8266WebServer/src/ESP8266WebServer-impl.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/ESP8266WebServer/src/ESP8266WebServer-impl.h b/libraries/ESP8266WebServer/src/ESP8266WebServer-impl.h index 1bb6ddefb6..d11b665cbb 100644 --- a/libraries/ESP8266WebServer/src/ESP8266WebServer-impl.h +++ b/libraries/ESP8266WebServer/src/ESP8266WebServer-impl.h @@ -55,7 +55,7 @@ ESP8266WebServerTemplate::ESP8266WebServerTemplate(IPAddress addr, i , _lastHandler(nullptr) , _currentArgCount(0) , _currentArgs(nullptr) -, _currentArgsHavePlain(0), +, _currentArgsHavePlain(0) , _postArgsLen(0) , _postArgs(nullptr) , _headerKeysCount(0) @@ -77,7 +77,7 @@ ESP8266WebServerTemplate::ESP8266WebServerTemplate(int port) , _lastHandler(nullptr) , _currentArgCount(0) , _currentArgs(nullptr) -, _currentArgsHavePlain(0), +, _currentArgsHavePlain(0) , _postArgsLen(0) , _postArgs(nullptr) , _headerKeysCount(0)