@@ -44,9 +44,8 @@ static bool readBytesWithTimeout(typename ServerType::ClientType& client, size_t
4444template <typename ServerType>
4545typename ESP8266WebServerTemplate<ServerType>::ClientFuture ESP8266WebServerTemplate<ServerType>::_parseRequest(ClientType& client) {
4646// Read the first line of HTTP request
47- String req = client.readStringUntil ( ' \r ' );
47+ String req = client.readStreamStringUntil ( " \r\n " );
4848DBGWS (" request: %s\n " , req.c_str ());
49- client.readStringUntil (' \n ' );
5049// reset header value
5150for (int i =0 ; i < _headerKeysCount; ++i) {
5251 _currentHeaders[i].value .clear ();
@@ -122,8 +121,7 @@ typename ESP8266WebServerTemplate<ServerType>::ClientFuture ESP8266WebServerTemp
122121uint32_t contentLength =0 ;
123122// parse headers
124123while (1 ){
125- req = client.readStringUntil (' \r ' );
126- client.readStringUntil (' \n ' );
124+ req = client.readStreamStringUntil (" \r\n " );
127125if (req.isEmpty ())break ;// no more headers
128126int headerDiv = req.indexOf (' :' );
129127if (headerDiv == -1 ){
@@ -198,8 +196,7 @@ typename ESP8266WebServerTemplate<ServerType>::ClientFuture ESP8266WebServerTemp
198196 String headerValue;
199197// parse headers
200198while (1 ){
201- req = client.readStringUntil (' \r ' );
202- client.readStringUntil (' \n ' );
199+ req = client.readStreamStringUntil (" \r\n " );
203200if (req.isEmpty ())break ;// no moar headers
204201int headerDiv = req.indexOf (' :' );
205202if (headerDiv == -1 ){
@@ -351,11 +348,10 @@ bool ESP8266WebServerTemplate<ServerType>::_parseForm(ClientType& client, const
351348 String line;
352349int retry =0 ;
353350do {
354- line = client.readStringUntil ( ' \r ' );
351+ line = client.readStreamStringUntil ( " \r\n " );
355352 ++retry;
356353 }while (line.length () ==0 && retry <3 );
357354
358- client.readStringUntil (' \n ' );
359355// start reading the form
360356if (line == (" --" +boundary)){
361357if (_postArgs)delete[] _postArgs;
@@ -368,8 +364,7 @@ bool ESP8266WebServerTemplate<ServerType>::_parseForm(ClientType& client, const
368364 String argFilename;
369365bool argIsFile =false ;
370366
371- line = client.readStringUntil (' \r ' );
372- client.readStringUntil (' \n ' );
367+ line = client.readStreamStringUntil (" \r\n " );
373368if (line.length () >19 && line.substring (0 ,19 ).equalsIgnoreCase (F (" Content-Disposition" ))){
374369int nameStart = line.indexOf (' =' );
375370if (nameStart != -1 ){
@@ -389,19 +384,16 @@ bool ESP8266WebServerTemplate<ServerType>::_parseForm(ClientType& client, const
389384DBGWS (" PostArg Name: %s\n " , argName.c_str ());
390385using namespace mime ;
391386 argType =FPSTR (mimeTable[txt].mimeType );
392- line = client.readStringUntil (' \r ' );
393- client.readStringUntil (' \n ' );
387+ line = client.readStreamStringUntil (" \r\n " );
394388if (line.length () >12 && line.substring (0 ,12 ).equalsIgnoreCase (FPSTR (Content_Type))){
395389 argType = line.substring (line.indexOf (' :' )+2 );
396390// skip next line
397- client.readStringUntil (' \r ' );
398- client.readStringUntil (' \n ' );
391+ client.readStringUntil (" \r\n " );
399392 }
400393DBGWS (" PostArg Type: %s\n " , argType.c_str ());
401394if (!argIsFile){
402395while (1 ){
403- line = client.readStringUntil (' \r ' );
404- client.readStringUntil (' \n ' );
396+ line = client.readStreamStringUntil (" \r\n " );
405397if (line.startsWith (" --" +boundary))break ;
406398if (argValue.length () >0 ) argValue +=' \n ' ;
407399 argValue += line;
@@ -475,8 +467,7 @@ bool ESP8266WebServerTemplate<ServerType>::_parseForm(ClientType& client, const
475467 _currentUpload->type .c_str (),
476468 (int )_currentUpload->totalSize );
477469if (!client.connected ())return _parseFormUploadAborted ();
478- line = client.readStringUntil (' \r ' );
479- client.readStringUntil (' \n ' );
470+ line = client.readStreamStringUntil (" \r\n " );
480471if (line ==" --" ) {// extra two dashes mean we reached the end of all form fields
481472DBGWS (" Done Parsing POST\n " );
482473break ;