@@ -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 std::unique_ptr<RequestArgument[]> postArgs (new RequestArgument[WEBSERVER_MAX_POST_ARGS]);
@@ -367,8 +363,7 @@ bool ESP8266WebServerTemplate<ServerType>::_parseForm(ClientType& client, const
367363 String argFilename;
368364 bool argIsFile = false ;
369365
370- line = client.readStringUntil (' \r ' );
371- client.readStringUntil (' \n ' );
366+ line = client.readStreamStringUntil (" \r\n " );
372367 if (line.length () > 19 && line.substring (0 , 19 ).equalsIgnoreCase (F (" Content-Disposition" ))){
373368 int nameStart = line.indexOf (' =' );
374369 if (nameStart != -1 ){
@@ -388,19 +383,16 @@ bool ESP8266WebServerTemplate<ServerType>::_parseForm(ClientType& client, const
388383 DBGWS (" PostArg Name: %s\n " , argName.c_str ());
389384 using namespace mime ;
390385 argType = FPSTR (mimeTable[txt].mimeType );
391- line = client.readStringUntil (' \r ' );
392- client.readStringUntil (' \n ' );
386+ line = client.readStreamStringUntil (" \r\n " );
393387 if (line.length () > 12 && line.substring (0 , 12 ).equalsIgnoreCase (FPSTR (Content_Type))){
394388 argType = line.substring (line.indexOf (' :' )+2 );
395389 // skip next line
396- client.readStringUntil (' \r ' );
397- client.readStringUntil (' \n ' );
390+ client.readStringUntil (" \r\n " );
398391 }
399392 DBGWS (" PostArg Type: %s\n " , argType.c_str ());
400393 if (!argIsFile){
401394 while (1 ){
402- line = client.readStringUntil (' \r ' );
403- client.readStringUntil (' \n ' );
395+ line = client.readStreamStringUntil (" \r\n " );
404396 if (line.startsWith (" --" +boundary)) break ;
405397 if (argValue.length () > 0 ) argValue += ' \n ' ;
406398 argValue += line;
@@ -474,8 +466,7 @@ bool ESP8266WebServerTemplate<ServerType>::_parseForm(ClientType& client, const
474466 _currentUpload->type .c_str (),
475467 (int )_currentUpload->totalSize );
476468 if (!client.connected ()) return _parseFormUploadAborted ();
477- line = client.readStringUntil (' \r ' );
478- client.readStringUntil (' \n ' );
469+ line = client.readStreamStringUntil (" \r\n " );
479470 if (line == " --" ) { // extra two dashes mean we reached the end of all form fields
480471 DBGWS (" Done Parsing POST\n " );
481472 break ;
0 commit comments