mirror of
https://github.com/esp8266/Arduino.git
synced 2025-06-12 01:53:07 +03:00
ESP8266HTTPClient: fix duplicate Content-Length headers (#1902)
This commit is contained in:
@ -706,19 +706,27 @@ String HTTPClient::errorToString(int error)
|
||||
* @param value
|
||||
* @param first
|
||||
*/
|
||||
void HTTPClient::addHeader(const String& name, const String& value, bool first)
|
||||
void HTTPClient::addHeader(const String& name, const String& value, bool first, bool replace)
|
||||
{
|
||||
|
||||
// not allow set of Header handled by code
|
||||
if(!name.equalsIgnoreCase(F("Connection")) &&
|
||||
!name.equalsIgnoreCase(F("User-Agent")) &&
|
||||
!name.equalsIgnoreCase(F("Host")) &&
|
||||
!(name.equalsIgnoreCase(F("Authorization")) && _base64Authorization.length())){
|
||||
|
||||
String headerLine = name;
|
||||
headerLine += ": ";
|
||||
|
||||
if (replace) {
|
||||
int headerStart = _headers.indexOf(headerLine);
|
||||
if (headerStart != -1) {
|
||||
int headerEnd = _headers.indexOf('\n', headerStart);
|
||||
_headers = _headers.substring(0, headerStart) + _headers.substring(headerEnd + 1);
|
||||
}
|
||||
}
|
||||
|
||||
headerLine += value;
|
||||
headerLine += "\r\n";
|
||||
|
||||
if(first) {
|
||||
_headers = headerLine + _headers;
|
||||
} else {
|
||||
|
@ -160,7 +160,7 @@ public:
|
||||
int sendRequest(const char * type, uint8_t * payload = NULL, size_t size = 0);
|
||||
int sendRequest(const char * type, Stream * stream, size_t size = 0);
|
||||
|
||||
void addHeader(const String& name, const String& value, bool first = false);
|
||||
void addHeader(const String& name, const String& value, bool first = false, bool replace = true);
|
||||
|
||||
/// Response handling
|
||||
void collectHeaders(const char* headerKeys[], const size_t headerKeysCount);
|
||||
|
Reference in New Issue
Block a user