@@ -341,30 +341,28 @@ bool AsyncWebServerRequest::_parseReqHead() {
341341}
342342
343343bool AsyncWebServerRequest::_parseReqHeader () {
344- std::optional< AsyncWebHeader> header = AsyncWebHeader::parse (_temp);
344+ AsyncWebHeader header = AsyncWebHeader::parse (_temp);
345345 if (header) {
346- const String &name = header.value ().name ();
347- const String &value = header.value ().value ();
348- if (name.equalsIgnoreCase (T_Host)) {
349- _host = value;
350- } else if (name.equalsIgnoreCase (T_Content_Type)) {
351- _contentType = value.substring (0 , value.indexOf (' ;' ));
352- if (value.startsWith (T_MULTIPART_ )) {
353- _boundary = value.substring (value.indexOf (' =' ) + 1 );
346+ if (header.name ().equalsIgnoreCase (T_Host)) {
347+ _host = header.value ();
348+ } else if (header.name ().equalsIgnoreCase (T_Content_Type)) {
349+ _contentType = header.value ().substring (0 , header.value ().indexOf (' ;' ));
350+ if (header.value ().startsWith (T_MULTIPART_ )) {
351+ _boundary = header.value ().substring (header.value ().indexOf (' =' ) + 1 );
354352 _boundary.replace (String (' "' ), String ());
355353 _isMultipart = true ;
356354 }
357- } else if (name.equalsIgnoreCase (T_Content_Length)) {
358- _contentLength = atoi (value.c_str ());
359- } else if (name.equalsIgnoreCase (T_EXPECT ) && value.equalsIgnoreCase (T_100_CONTINUE )) {
355+ } else if (header. name () .equalsIgnoreCase (T_Content_Length)) {
356+ _contentLength = atoi (header. value () .c_str ());
357+ } else if (header. name () .equalsIgnoreCase (T_EXPECT ) && header. value () .equalsIgnoreCase (T_100_CONTINUE )) {
360358 _expectingContinue = true ;
361- } else if (name.equalsIgnoreCase (T_AUTH )) {
362- int space = value.indexOf (' ' );
359+ } else if (header. name () .equalsIgnoreCase (T_AUTH )) {
360+ int space = header. value () .indexOf (' ' );
363361 if (space == -1 ) {
364- _authorization = value;
362+ _authorization = header. value () ;
365363 _authMethod = AsyncAuthType::AUTH_OTHER ;
366364 } else {
367- String method = value.substring (0 , space);
365+ String method = header. value () .substring (0 , space);
368366 if (method.equalsIgnoreCase (T_BASIC )) {
369367 _authMethod = AsyncAuthType::AUTH_BASIC ;
370368 } else if (method.equalsIgnoreCase (T_DIGEST )) {
@@ -374,13 +372,13 @@ bool AsyncWebServerRequest::_parseReqHeader() {
374372 } else {
375373 _authMethod = AsyncAuthType::AUTH_OTHER ;
376374 }
377- _authorization = value.substring (space + 1 );
375+ _authorization = header. value () .substring (space + 1 );
378376 }
379- } else if (name.equalsIgnoreCase (T_UPGRADE ) && value.equalsIgnoreCase (T_WS )) {
377+ } else if (header. name () .equalsIgnoreCase (T_UPGRADE ) && header. value () .equalsIgnoreCase (T_WS )) {
380378 // WebSocket request can be uniquely identified by header: [Upgrade: websocket]
381379 _reqconntype = RCT_WS ;
382- } else if (name.equalsIgnoreCase (T_ACCEPT )) {
383- String lowcase (value);
380+ } else if (header. name () .equalsIgnoreCase (T_ACCEPT )) {
381+ String lowcase (header. value () );
384382 lowcase.toLowerCase ();
385383#ifndef ESP8266
386384 const char *substr = std::strstr (lowcase.c_str (), T_text_event_stream);
@@ -392,7 +390,7 @@ bool AsyncWebServerRequest::_parseReqHeader() {
392390 _reqconntype = RCT_EVENT ;
393391 }
394392 }
395- _headers.emplace_back (std::move (header. value () ));
393+ _headers.emplace_back (std::move (header));
396394 }
397395#if defined(TARGET_RP2040) || defined(TARGET_RP2350) || defined(PICO_RP2040) || defined(PICO_RP2350) || defined(LIBRETINY)
398396 // Ancient PRI core does not have String::clear() method 8-()
0 commit comments