@@ -190,20 +190,26 @@ bool ESP8266WebServer::_parseRequest(WiFiClient& client) {
190
190
size_t decodedLen = decoded.length ();
191
191
memcpy (plainBuf, decoded.c_str (), decodedLen);
192
192
plainBuf[decodedLen] = 0 ;
193
- } else {
193
+ searchStr += plainBuf;
194
+ }
195
+ _parseArguments (searchStr);
196
+ if (!isEncoded){
194
197
// plain post json or other data
195
- searchStr += " plain=" ;
198
+ RequestArgument& arg = _currentArgs[_currentArgCount++];
199
+ arg.key = " plain" ;
200
+ arg.value = String (plainBuf);
196
201
}
197
- searchStr += plainBuf;
202
+
198
203
#ifdef DEBUG_ESP_HTTP_SERVER
199
204
DEBUG_OUTPUT.print (" Plain: " );
200
205
DEBUG_OUTPUT.println (plainBuf);
201
206
#endif
202
207
free (plainBuf);
203
208
}
204
209
}
205
- _parseArguments (searchStr);
210
+
206
211
if (isForm){
212
+ _parseArguments (searchStr);
207
213
if (!_parseForm (client, boundaryStr, contentLength)) {
208
214
return false ;
209
215
}
@@ -269,6 +275,7 @@ void ESP8266WebServer::_parseArguments(String data) {
269
275
_currentArgs = 0 ;
270
276
if (data.length () == 0 ) {
271
277
_currentArgCount = 0 ;
278
+ _currentArgs = new RequestArgument[1 ];
272
279
return ;
273
280
}
274
281
_currentArgCount = 1 ;
@@ -285,7 +292,7 @@ void ESP8266WebServer::_parseArguments(String data) {
285
292
DEBUG_OUTPUT.println (_currentArgCount);
286
293
#endif
287
294
288
- _currentArgs = new RequestArgument[_currentArgCount];
295
+ _currentArgs = new RequestArgument[_currentArgCount+ 1 ];
289
296
int pos = 0 ;
290
297
int iarg;
291
298
for (iarg = 0 ; iarg < _currentArgCount;) {
0 commit comments