@@ -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 " );
4848 DBGWS (" request: %s\n " , req.c_str ());
49- client.readStringUntil (' \n ' );
5049 // reset header value
5150 for (int i = 0 ; i < _headerKeysCount; ++i) {
5251 _currentHeaders[i].value .clear ();
@@ -122,8 +121,7 @@ typename ESP8266WebServerTemplate<ServerType>::ClientFuture ESP8266WebServerTemp
122121 uint32_t contentLength = 0 ;
123122 // parse headers
124123 while (1 ){
125- req = client.readStringUntil (' \r ' );
126- client.readStringUntil (' \n ' );
124+ req = client.readStreamStringUntil (" \r\n " );
127125 if (req.isEmpty ()) break ; // no more headers
128126 int headerDiv = req.indexOf (' :' );
129127 if (headerDiv == -1 ){
@@ -198,8 +196,7 @@ typename ESP8266WebServerTemplate<ServerType>::ClientFuture ESP8266WebServerTemp
198196 String headerValue;
199197 // parse headers
200198 while (1 ){
201- req = client.readStringUntil (' \r ' );
202- client.readStringUntil (' \n ' );
199+ req = client.readStreamStringUntil (" \r\n " );
203200 if (req.isEmpty ()) break ;// no moar headers
204201 int headerDiv = req.indexOf (' :' );
205202 if (headerDiv == -1 ){
@@ -351,11 +348,10 @@ bool ESP8266WebServerTemplate<ServerType>::_parseForm(ClientType& client, const
351348 String line;
352349 int retry = 0 ;
353350 do {
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
360356 if (line == (" --" +boundary)){
361357 if (_postArgs) delete[] _postArgs;
@@ -368,8 +364,7 @@ bool ESP8266WebServerTemplate<ServerType>::_parseForm(ClientType& client, const
368364 String argFilename;
369365 bool argIsFile = false ;
370366
371- line = client.readStringUntil (' \r ' );
372- client.readStringUntil (' \n ' );
367+ line = client.readStreamStringUntil (" \r\n " );
373368 if (line.length () > 19 && line.substring (0 , 19 ).equalsIgnoreCase (F (" Content-Disposition" ))){
374369 int nameStart = line.indexOf (' =' );
375370 if (nameStart != -1 ){
@@ -389,19 +384,16 @@ bool ESP8266WebServerTemplate<ServerType>::_parseForm(ClientType& client, const
389384 DBGWS (" PostArg Name: %s\n " , argName.c_str ());
390385 using namespace mime ;
391386 argType = FPSTR (mimeTable[txt].mimeType );
392- line = client.readStringUntil (' \r ' );
393- client.readStringUntil (' \n ' );
387+ line = client.readStreamStringUntil (" \r\n " );
394388 if (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 }
400393 DBGWS (" PostArg Type: %s\n " , argType.c_str ());
401394 if (!argIsFile){
402395 while (1 ){
403- line = client.readStringUntil (' \r ' );
404- client.readStringUntil (' \n ' );
396+ line = client.readStreamStringUntil (" \r\n " );
405397 if (line.startsWith (" --" +boundary)) break ;
406398 if (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 );
477469 if (!client.connected ()) return _parseFormUploadAborted ();
478- line = client.readStringUntil (' \r ' );
479- client.readStringUntil (' \n ' );
470+ line = client.readStreamStringUntil (" \r\n " );
480471 if (line == " --" ) { // extra two dashes mean we reached the end of all form fields
481472 DBGWS (" Done Parsing POST\n " );
482473 break ;
0 commit comments