@@ -373,7 +373,7 @@ void ESP8266WebServerTemplate<ServerType>::close() {
373
373
_server.close ();
374
374
_currentStatus = HC_NONE;
375
375
if (!_headerKeysCount)
376
- collectHeaders (0 , 0 );
376
+ collectHeaders ();
377
377
}
378
378
379
379
template <typename ServerType>
@@ -544,7 +544,7 @@ void ESP8266WebServerTemplate<ServerType>::_streamFileCore(const size_t fileSize
544
544
}
545
545
546
546
template <typename ServerType>
547
- const String& ESP8266WebServerTemplate<ServerType>::pathArg(unsigned int i) const {
547
+ const String& ESP8266WebServerTemplate<ServerType>::pathArg(unsigned int i) const {
548
548
if (_currentHandler != nullptr )
549
549
return _currentHandler->pathArg (i);
550
550
return emptyString;
@@ -595,7 +595,6 @@ bool ESP8266WebServerTemplate<ServerType>::hasArg(const String& name) const {
595
595
return false ;
596
596
}
597
597
598
-
599
598
template <typename ServerType>
600
599
const String& ESP8266WebServerTemplate<ServerType>::header(const String& name) const {
601
600
for (int i = 0 ; i < _headerKeysCount; ++i) {
@@ -605,21 +604,30 @@ const String& ESP8266WebServerTemplate<ServerType>::header(const String& name) c
605
604
return emptyString;
606
605
}
607
606
608
-
609
607
template <typename ServerType>
610
608
void ESP8266WebServerTemplate<ServerType>::collectHeaders(const char * headerKeys[], const size_t headerKeysCount) {
611
- _headerKeysCount = headerKeysCount + 2 ;
612
- if (_currentHeaders){
609
+ if (_currentHeaders)
613
610
delete[] _currentHeaders;
614
- }
615
- _currentHeaders = new RequestArgument[_headerKeysCount];
611
+ _currentHeaders = new RequestArgument[_headerKeysCount = headerKeysCount + 2 ];
616
612
_currentHeaders[0 ].key = FPSTR (AUTHORIZATION_HEADER);
617
613
_currentHeaders[1 ].key = FPSTR (ETAG_HEADER);
618
614
for (int i = 2 ; i < _headerKeysCount; i++){
619
- _currentHeaders[i].key = headerKeys[i- 2 ];
615
+ _currentHeaders[i].key = headerKeys[i - 2 ];
620
616
}
621
617
}
622
618
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
+
623
631
template <typename ServerType>
624
632
const String& ESP8266WebServerTemplate<ServerType>::header(int i) const {
625
633
if (i < _headerKeysCount)
0 commit comments