@@ -372,7 +372,7 @@ void ESP8266WebServerTemplate<ServerType>::close() {
372
372
_server.close ();
373
373
_currentStatus = HC_NONE;
374
374
if (!_headerKeysCount)
375
- collectHeaders (0 , 0 );
375
+ collectHeaders ();
376
376
}
377
377
378
378
template <typename ServerType>
@@ -557,7 +557,7 @@ void ESP8266WebServerTemplate<ServerType>::_streamFileCore(const size_t fileSize
557
557
}
558
558
559
559
template <typename ServerType>
560
- const String& ESP8266WebServerTemplate<ServerType>::pathArg(unsigned int i) const {
560
+ const String& ESP8266WebServerTemplate<ServerType>::pathArg(unsigned int i) const {
561
561
if (_currentHandler != nullptr )
562
562
return _currentHandler->pathArg (i);
563
563
return emptyString;
@@ -608,7 +608,6 @@ bool ESP8266WebServerTemplate<ServerType>::hasArg(const String& name) const {
608
608
return false ;
609
609
}
610
610
611
-
612
611
template <typename ServerType>
613
612
const String& ESP8266WebServerTemplate<ServerType>::header(const String& name) const {
614
613
for (int i = 0 ; i < _headerKeysCount; ++i) {
@@ -618,21 +617,30 @@ const String& ESP8266WebServerTemplate<ServerType>::header(const String& name) c
618
617
return emptyString;
619
618
}
620
619
621
-
622
620
template <typename ServerType>
623
621
void ESP8266WebServerTemplate<ServerType>::collectHeaders(const char * headerKeys[], const size_t headerKeysCount) {
624
- _headerKeysCount = headerKeysCount + 2 ;
625
- if (_currentHeaders){
622
+ if (_currentHeaders)
626
623
delete[] _currentHeaders;
627
- }
628
- _currentHeaders = new RequestArgument[_headerKeysCount];
624
+ _currentHeaders = new RequestArgument[_headerKeysCount = headerKeysCount + 2 ];
629
625
_currentHeaders[0 ].key = FPSTR (AUTHORIZATION_HEADER);
630
626
_currentHeaders[1 ].key = FPSTR (ETAG_HEADER);
631
627
for (int i = 2 ; i < _headerKeysCount; i++){
632
- _currentHeaders[i].key = headerKeys[i- 2 ];
628
+ _currentHeaders[i].key = headerKeys[i - 2 ];
633
629
}
634
630
}
635
631
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
+
636
644
template <typename ServerType>
637
645
const String& ESP8266WebServerTemplate<ServerType>::header(int i) const {
638
646
if (i < _headerKeysCount)
0 commit comments