@@ -373,7 +373,7 @@ void ESP8266WebServerTemplate<ServerType>::close() {
373373 _server.close ();
374374 _currentStatus = HC_NONE;
375375 if (!_headerKeysCount)
376- collectHeaders (0 , 0 );
376+ collectHeaders ();
377377}
378378
379379template <typename ServerType>
@@ -544,7 +544,7 @@ void ESP8266WebServerTemplate<ServerType>::_streamFileCore(const size_t fileSize
544544}
545545
546546template <typename ServerType>
547- const String& ESP8266WebServerTemplate<ServerType>::pathArg(unsigned int i) const {
547+ const String& ESP8266WebServerTemplate<ServerType>::pathArg(unsigned int i) const {
548548 if (_currentHandler != nullptr )
549549 return _currentHandler->pathArg (i);
550550 return emptyString;
@@ -595,7 +595,6 @@ bool ESP8266WebServerTemplate<ServerType>::hasArg(const String& name) const {
595595 return false ;
596596}
597597
598-
599598template <typename ServerType>
600599const String& ESP8266WebServerTemplate<ServerType>::header(const String& name) const {
601600 for (int i = 0 ; i < _headerKeysCount; ++i) {
@@ -605,21 +604,30 @@ const String& ESP8266WebServerTemplate<ServerType>::header(const String& name) c
605604 return emptyString;
606605}
607606
608-
609607template <typename ServerType>
610608void ESP8266WebServerTemplate<ServerType>::collectHeaders(const char * headerKeys[], const size_t headerKeysCount) {
611- _headerKeysCount = headerKeysCount + 2 ;
612- if (_currentHeaders){
609+ if (_currentHeaders)
613610 delete[] _currentHeaders;
614- }
615- _currentHeaders = new RequestArgument[_headerKeysCount];
611+ _currentHeaders = new RequestArgument[_headerKeysCount = headerKeysCount + 2 ];
616612 _currentHeaders[0 ].key = FPSTR (AUTHORIZATION_HEADER);
617613 _currentHeaders[1 ].key = FPSTR (ETAG_HEADER);
618614 for (int i = 2 ; i < _headerKeysCount; i++){
619- _currentHeaders[i].key = headerKeys[i- 2 ];
615+ _currentHeaders[i].key = headerKeys[i - 2 ];
620616 }
621617}
622618
619+ template <typename ServerType>
620+ template <typename ... Args>
621+ void ESP8266WebServerTemplate<ServerType>::collectHeaders(const Args&... args) {
622+ if (_currentHeaders)
623+ delete[] _currentHeaders;
624+ _currentHeaders = new RequestArgument[_headerKeysCount = sizeof ...(args) + 2 ] {
625+ { .key = FPSTR (AUTHORIZATION_HEADER), .value = emptyString },
626+ { .key = FPSTR (ETAG_HEADER), .value = emptyString },
627+ { .key = args, .value = emptyString } ...
628+ };
629+ }
630+
623631template <typename ServerType>
624632const String& ESP8266WebServerTemplate<ServerType>::header(int i) const {
625633 if (i < _headerKeysCount)
0 commit comments