@@ -372,7 +372,7 @@ void ESP8266WebServerTemplate<ServerType>::close() {
372372 _server.close ();
373373 _currentStatus = HC_NONE;
374374 if (!_headerKeysCount)
375- collectHeaders (0 , 0 );
375+ collectHeaders ();
376376}
377377
378378template <typename ServerType>
@@ -557,7 +557,7 @@ void ESP8266WebServerTemplate<ServerType>::_streamFileCore(const size_t fileSize
557557}
558558
559559template <typename ServerType>
560- const String& ESP8266WebServerTemplate<ServerType>::pathArg(unsigned int i) const {
560+ const String& ESP8266WebServerTemplate<ServerType>::pathArg(unsigned int i) const {
561561 if (_currentHandler != nullptr )
562562 return _currentHandler->pathArg (i);
563563 return emptyString;
@@ -608,7 +608,6 @@ bool ESP8266WebServerTemplate<ServerType>::hasArg(const String& name) const {
608608 return false ;
609609}
610610
611-
612611template <typename ServerType>
613612const String& ESP8266WebServerTemplate<ServerType>::header(const String& name) const {
614613 for (int i = 0 ; i < _headerKeysCount; ++i) {
@@ -618,21 +617,30 @@ const String& ESP8266WebServerTemplate<ServerType>::header(const String& name) c
618617 return emptyString;
619618}
620619
621-
622620template <typename ServerType>
623621void ESP8266WebServerTemplate<ServerType>::collectHeaders(const char * headerKeys[], const size_t headerKeysCount) {
624- _headerKeysCount = headerKeysCount + 2 ;
625- if (_currentHeaders){
622+ if (_currentHeaders)
626623 delete[] _currentHeaders;
627- }
628- _currentHeaders = new RequestArgument[_headerKeysCount];
624+ _currentHeaders = new RequestArgument[_headerKeysCount = headerKeysCount + 2 ];
629625 _currentHeaders[0 ].key = FPSTR (AUTHORIZATION_HEADER);
630626 _currentHeaders[1 ].key = FPSTR (ETAG_HEADER);
631627 for (int i = 2 ; i < _headerKeysCount; i++){
632- _currentHeaders[i].key = headerKeys[i- 2 ];
628+ _currentHeaders[i].key = headerKeys[i - 2 ];
633629 }
634630}
635631
632+ template <typename ServerType>
633+ template <typename ... Args>
634+ void ESP8266WebServerTemplate<ServerType>::collectHeaders(const Args&... args) {
635+ if (_currentHeaders)
636+ delete[] _currentHeaders;
637+ _currentHeaders = new RequestArgument[_headerKeysCount = sizeof ...(args) + 2 ] {
638+ { .key = FPSTR (AUTHORIZATION_HEADER), .value = emptyString },
639+ { .key = FPSTR (ETAG_HEADER), .value = emptyString },
640+ { .key = args, .value = emptyString } ...
641+ };
642+ }
643+
636644template <typename ServerType>
637645const String& ESP8266WebServerTemplate<ServerType>::header(int i) const {
638646 if (i < _headerKeysCount)
0 commit comments