Skip to content

Commit e58bb60

Browse files
authored
webserver: do not count "plain" in argument list (#6768)
* webserver: do not count "plain" in argument list (it is still available though)
1 parent 1134194 commit e58bb60

File tree

3 files changed

+8
-4
lines changed

3 files changed

+8
-4
lines changed

Diff for: libraries/ESP8266WebServer/src/ESP8266WebServer-impl.h

+6-4
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ ESP8266WebServerTemplate<ServerType>::ESP8266WebServerTemplate(IPAddress addr, i
5454
, _lastHandler(nullptr)
5555
, _currentArgCount(0)
5656
, _currentArgs(nullptr)
57+
, _currentArgsHavePlain(0)
5758
, _postArgsLen(0)
5859
, _postArgs(nullptr)
5960
, _headerKeysCount(0)
@@ -76,6 +77,7 @@ ESP8266WebServerTemplate<ServerType>::ESP8266WebServerTemplate(int port)
7677
, _lastHandler(nullptr)
7778
, _currentArgCount(0)
7879
, _currentArgs(nullptr)
80+
, _currentArgsHavePlain(0)
7981
, _postArgsLen(0)
8082
, _postArgs(nullptr)
8183
, _headerKeysCount(0)
@@ -565,7 +567,7 @@ const String& ESP8266WebServerTemplate<ServerType>::arg(const String& name) cons
565567
if ( _postArgs[j].key == name )
566568
return _postArgs[j].value;
567569
}
568-
for (int i = 0; i < _currentArgCount; ++i) {
570+
for (int i = 0; i < _currentArgCount + _currentArgsHavePlain; ++i) {
569571
if ( _currentArgs[i].key == name )
570572
return _currentArgs[i].value;
571573
}
@@ -574,14 +576,14 @@ const String& ESP8266WebServerTemplate<ServerType>::arg(const String& name) cons
574576

575577
template <typename ServerType>
576578
const String& ESP8266WebServerTemplate<ServerType>::arg(int i) const {
577-
if (i >= 0 && i < _currentArgCount)
579+
if (i >= 0 && i < _currentArgCount + _currentArgsHavePlain)
578580
return _currentArgs[i].value;
579581
return emptyString;
580582
}
581583

582584
template <typename ServerType>
583585
const String& ESP8266WebServerTemplate<ServerType>::argName(int i) const {
584-
if (i >= 0 && i < _currentArgCount)
586+
if (i >= 0 && i < _currentArgCount + _currentArgsHavePlain)
585587
return _currentArgs[i].key;
586588
return emptyString;
587589
}
@@ -597,7 +599,7 @@ bool ESP8266WebServerTemplate<ServerType>::hasArg(const String& name) const {
597599
if (_postArgs[j].key == name)
598600
return true;
599601
}
600-
for (int i = 0; i < _currentArgCount; ++i) {
602+
for (int i = 0; i < _currentArgCount + _currentArgsHavePlain; ++i) {
601603
if (_currentArgs[i].key == name)
602604
return true;
603605
}

Diff for: libraries/ESP8266WebServer/src/ESP8266WebServer.h

+1
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,7 @@ class ESP8266WebServerTemplate
233233

234234
int _currentArgCount;
235235
RequestArgument* _currentArgs;
236+
int _currentArgsHavePlain;
236237
std::unique_ptr<HTTPUpload> _currentUpload;
237238
int _postArgsLen;
238239
RequestArgument* _postArgs;

Diff for: libraries/ESP8266WebServer/src/Parsing-impl.h

+1
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,7 @@ bool ESP8266WebServerTemplate<ServerType>::_parseRequest(ClientType& client) {
208208
RequestArgument& arg = _currentArgs[_currentArgCount++];
209209
arg.key = F("plain");
210210
arg.value = plainBuf;
211+
_currentArgsHavePlain = 1;
211212
}
212213
} else { // isForm is true
213214
// here: content is not yet read (plainBuf is still empty)

0 commit comments

Comments
 (0)