@@ -44,7 +44,8 @@ static bool readBytesWithTimeout(typename ServerType::ClientType& client, size_t
44
44
template <typename ServerType>
45
45
typename ESP8266WebServerTemplate<ServerType>::ClientFuture ESP8266WebServerTemplate<ServerType>::_parseRequest(ClientType& client) {
46
46
// Read the first line of HTTP request
47
- String req = client.readStringUntil (' \r ' );
47
+ StreamString req;
48
+ client.sendUntil (req, ' \r ' );
48
49
DBGWS (" request: %s\n " , req.c_str ());
49
50
client.readStringUntil (' \n ' );
50
51
// reset header value
@@ -122,7 +123,8 @@ typename ESP8266WebServerTemplate<ServerType>::ClientFuture ESP8266WebServerTemp
122
123
uint32_t contentLength = 0 ;
123
124
// parse headers
124
125
while (1 ){
125
- req = client.readStringUntil (' \r ' );
126
+ req.clear ();
127
+ client.sendUntil (req, ' \r ' );
126
128
client.readStringUntil (' \n ' );
127
129
if (req.isEmpty ()) break ; // no more headers
128
130
int headerDiv = req.indexOf (' :' );
@@ -198,7 +200,8 @@ typename ESP8266WebServerTemplate<ServerType>::ClientFuture ESP8266WebServerTemp
198
200
String headerValue;
199
201
// parse headers
200
202
while (1 ){
201
- req = client.readStringUntil (' \r ' );
203
+ req.clear ();
204
+ client.sendUntil (req, ' \r ' );
202
205
client.readStringUntil (' \n ' );
203
206
if (req.isEmpty ()) break ;// no moar headers
204
207
int headerDiv = req.indexOf (' :' );
@@ -348,10 +351,10 @@ template <typename ServerType>
348
351
bool ESP8266WebServerTemplate<ServerType>::_parseForm(ClientType& client, const String& boundary, uint32_t len){
349
352
(void ) len;
350
353
DBGWS (" Parse Form: Boundary: '%s' Length: %d\n " , boundary.c_str (), (int )len);
351
- String line;
354
+ StreamString line;
352
355
int retry = 0 ;
353
356
do {
354
- line = client.readStringUntil ( ' \r ' );
357
+ client.sendUntil (line, ' \r ' );
355
358
++retry;
356
359
} while (line.length () == 0 && retry < 3 );
357
360
@@ -368,7 +371,8 @@ bool ESP8266WebServerTemplate<ServerType>::_parseForm(ClientType& client, const
368
371
String argFilename;
369
372
bool argIsFile = false ;
370
373
371
- line = client.readStringUntil (' \r ' );
374
+ line.clear ();
375
+ client.sendUntil (line, ' \r ' );
372
376
client.readStringUntil (' \n ' );
373
377
if (line.length () > 19 && line.substring (0 , 19 ).equalsIgnoreCase (F (" Content-Disposition" ))){
374
378
int nameStart = line.indexOf (' =' );
@@ -389,7 +393,8 @@ bool ESP8266WebServerTemplate<ServerType>::_parseForm(ClientType& client, const
389
393
DBGWS (" PostArg Name: %s\n " , argName.c_str ());
390
394
using namespace mime ;
391
395
argType = FPSTR (mimeTable[txt].mimeType );
392
- line = client.readStringUntil (' \r ' );
396
+ line.clear ();
397
+ client.sendUntil (line, ' \r ' );
393
398
client.readStringUntil (' \n ' );
394
399
if (line.length () > 12 && line.substring (0 , 12 ).equalsIgnoreCase (FPSTR (Content_Type))){
395
400
argType = line.substring (line.indexOf (' :' )+2 );
@@ -400,7 +405,8 @@ bool ESP8266WebServerTemplate<ServerType>::_parseForm(ClientType& client, const
400
405
DBGWS (" PostArg Type: %s\n " , argType.c_str ());
401
406
if (!argIsFile){
402
407
while (1 ){
403
- line = client.readStringUntil (' \r ' );
408
+ line.clear ();
409
+ client.sendUntil (line, ' \r ' );
404
410
client.readStringUntil (' \n ' );
405
411
if (line.startsWith (" --" +boundary)) break ;
406
412
if (argValue.length () > 0 ) argValue += ' \n ' ;
@@ -475,7 +481,8 @@ bool ESP8266WebServerTemplate<ServerType>::_parseForm(ClientType& client, const
475
481
_currentUpload->type .c_str (),
476
482
(int )_currentUpload->totalSize );
477
483
if (!client.connected ()) return _parseFormUploadAborted ();
478
- line = client.readStringUntil (' \r ' );
484
+ line.clear ();
485
+ client.sendUntil (line, ' \r ' );
479
486
client.readStringUntil (' \n ' );
480
487
if (line == " --" ) { // extra two dashes mean we reached the end of all form fields
481
488
DBGWS (" Done Parsing POST\n " );
0 commit comments