@@ -190,20 +190,26 @@ bool ESP8266WebServer::_parseRequest(WiFiClient& client) {
190190 size_t decodedLen = decoded.length ();
191191 memcpy (plainBuf, decoded.c_str (), decodedLen);
192192 plainBuf[decodedLen] = 0 ;
193- } else {
193+ searchStr += plainBuf;
194+ }
195+ _parseArguments (searchStr);
196+ if (!isEncoded){
194197 // plain post json or other data
195- searchStr += " plain=" ;
198+ RequestArgument& arg = _currentArgs[_currentArgCount++];
199+ arg.key = " plain" ;
200+ arg.value = String (plainBuf);
196201 }
197- searchStr += plainBuf;
202+
198203 #ifdef DEBUG_ESP_HTTP_SERVER
199204 DEBUG_OUTPUT.print (" Plain: " );
200205 DEBUG_OUTPUT.println (plainBuf);
201206 #endif
202207 free (plainBuf);
203208 }
204209 }
205- _parseArguments (searchStr);
210+
206211 if (isForm){
212+ _parseArguments (searchStr);
207213 if (!_parseForm (client, boundaryStr, contentLength)) {
208214 return false ;
209215 }
@@ -269,6 +275,7 @@ void ESP8266WebServer::_parseArguments(String data) {
269275 _currentArgs = 0 ;
270276 if (data.length () == 0 ) {
271277 _currentArgCount = 0 ;
278+ _currentArgs = new RequestArgument[1 ];
272279 return ;
273280 }
274281 _currentArgCount = 1 ;
@@ -285,7 +292,7 @@ void ESP8266WebServer::_parseArguments(String data) {
285292 DEBUG_OUTPUT.println (_currentArgCount);
286293#endif
287294
288- _currentArgs = new RequestArgument[_currentArgCount];
295+ _currentArgs = new RequestArgument[_currentArgCount+ 1 ];
289296 int pos = 0 ;
290297 int iarg;
291298 for (iarg = 0 ; iarg < _currentArgCount;) {
0 commit comments