Fix support for following redirects added by ee88c42c3b (#4240) (#4385)

This commit is contained in:
Dan Oprescu 2020-10-14 12:32:47 +01:00 committed by GitHub
parent d8dca9c73b
commit ee3bb16c77
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -919,21 +919,19 @@ int HTTPClient::writeToStream(Stream * stream)
*/
String HTTPClient::getString(void)
{
StreamString sstring;
if(_size > 0) {
// try to reserve needed memmory
if(!sstring.reserve((_size + 1))) {
// _size can be -1 when Server sends no Content-Length header
if(_size > 0 || _size == -1) {
StreamString sstring;
// try to reserve needed memory (noop if _size == -1)
if(sstring.reserve((_size + 1))) {
writeToStream(&sstring);
return sstring;
} else {
log_d("not enough memory to reserve a string! need: %d", (_size + 1));
return "";
}
}
else {
return "";
}
writeToStream(&sstring);
return sstring;
return "";
}
/**
@ -1441,8 +1439,10 @@ bool HTTPClient::setURL(const String& url)
_port = (_protocol == "https" ? 443 : 80);
}
// disconnect but preserve _client (clear _canReuse so disconnect will close the connection)
_canReuse = false;
// disconnect but preserve _client.
// Also have to keep the connection otherwise it will free some of the memory used by _client
// and will blow up later when trying to do _client->available() or similar
_canReuse = true;
disconnect(true);
return beginInternal(url, _protocol.c_str());
}