@@ -44,7 +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+ StreamString req;
48+ client.sendUntil (req,' \r ' );
4849DBGWS (" request: %s\n " , req.c_str ());
4950 client.readStringUntil (' \n ' );
5051// reset header value
@@ -122,7 +123,8 @@ typename ESP8266WebServerTemplate<ServerType>::ClientFuture ESP8266WebServerTemp
122123uint32_t contentLength =0 ;
123124// parse headers
124125while (1 ){
125- req = client.readStringUntil (' \r ' );
126+ req.clear ();
127+ client.sendUntil (req,' \r ' );
126128 client.readStringUntil (' \n ' );
127129if (req.isEmpty ())break ;// no more headers
128130int headerDiv = req.indexOf (' :' );
@@ -198,7 +200,8 @@ typename ESP8266WebServerTemplate<ServerType>::ClientFuture ESP8266WebServerTemp
198200 String headerValue;
199201// parse headers
200202while (1 ){
201- req = client.readStringUntil (' \r ' );
203+ req.clear ();
204+ client.sendUntil (req,' \r ' );
202205 client.readStringUntil (' \n ' );
203206if (req.isEmpty ())break ;// no moar headers
204207int headerDiv = req.indexOf (' :' );
@@ -348,10 +351,10 @@ template <typename ServerType>
348351bool ESP8266WebServerTemplate<ServerType>::_parseForm(ClientType& client,const String& boundary,uint32_t len){
349352 (void ) len;
350353DBGWS (" Parse Form: Boundary: '%s' Length: %d\n " , boundary.c_str (), (int )len);
351- String line;
354+ StreamString line;
352355int retry =0 ;
353356do {
354- line = client.readStringUntil ( ' \r ' );
357+ client.sendUntil (line, ' \r ' );
355358 ++retry;
356359 }while (line.length () ==0 && retry <3 );
357360
@@ -368,7 +371,8 @@ bool ESP8266WebServerTemplate<ServerType>::_parseForm(ClientType& client, const
368371 String argFilename;
369372bool argIsFile =false ;
370373
371- line = client.readStringUntil (' \r ' );
374+ line.clear ();
375+ client.sendUntil (line,' \r ' );
372376 client.readStringUntil (' \n ' );
373377if (line.length () >19 && line.substring (0 ,19 ).equalsIgnoreCase (F (" Content-Disposition" ))){
374378int nameStart = line.indexOf (' =' );
@@ -389,7 +393,8 @@ bool ESP8266WebServerTemplate<ServerType>::_parseForm(ClientType& client, const
389393DBGWS (" PostArg Name: %s\n " , argName.c_str ());
390394using namespace mime ;
391395 argType =FPSTR (mimeTable[txt].mimeType );
392- line = client.readStringUntil (' \r ' );
396+ line.clear ();
397+ client.sendUntil (line,' \r ' );
393398 client.readStringUntil (' \n ' );
394399if (line.length () >12 && line.substring (0 ,12 ).equalsIgnoreCase (FPSTR (Content_Type))){
395400 argType = line.substring (line.indexOf (' :' )+2 );
@@ -400,7 +405,8 @@ bool ESP8266WebServerTemplate<ServerType>::_parseForm(ClientType& client, const
400405DBGWS (" PostArg Type: %s\n " , argType.c_str ());
401406if (!argIsFile){
402407while (1 ){
403- line = client.readStringUntil (' \r ' );
408+ line.clear ();
409+ client.sendUntil (line,' \r ' );
404410 client.readStringUntil (' \n ' );
405411if (line.startsWith (" --" +boundary))break ;
406412if (argValue.length () >0 ) argValue +=' \n ' ;
@@ -475,7 +481,8 @@ bool ESP8266WebServerTemplate<ServerType>::_parseForm(ClientType& client, const
475481 _currentUpload->type .c_str (),
476482 (int )_currentUpload->totalSize );
477483if (!client.connected ())return _parseFormUploadAborted ();
478- line = client.readStringUntil (' \r ' );
484+ line.clear ();
485+ client.sendUntil (line,' \r ' );
479486 client.readStringUntil (' \n ' );
480487if (line ==" --" ) {// extra two dashes mean we reached the end of all form fields
481488DBGWS (" Done Parsing POST\n " );