Fix Check for _cookieJar in HTTPClient (#6266) (#6280)

* Check for cookieJar before setting cookies

* Return as soon as possible w/o _cookieJar
This commit is contained in:
BBsan
2022-02-16 11:08:24 +01:00
committed by GitHub
parent 05d8cddee7
commit c99f594b63

View File

@ -1543,6 +1543,10 @@ void HTTPClient::clearAllCookies()
void HTTPClient::setCookie(String date, String headerValue)
{
if (!_cookieJar)
{
return;
}
#define HTTP_TIME_PATTERN "%a, %d %b %Y %H:%M:%S"
Cookie cookie;
@ -1642,7 +1646,7 @@ void HTTPClient::setCookie(String date, String headerValue)
bool found = false;
for (auto c = _cookieJar->begin(); c != _cookieJar->end(); ++c) {
for (auto c = _cookieJar->begin(); c != _cookieJar->end(); ++c) {
if (c->domain == cookie.domain && c->name == cookie.name) {
// when evaluating, max-age takes precedence over expires if both are defined
if ((cookie.max_age.valid && ((cookie.date + cookie.max_age.duration) < now_gmt)) || cookie.max_age.duration <= 0
@ -1670,6 +1674,10 @@ bool HTTPClient::generateCookieString(String *cookieString)
*cookieString = "";
bool found = false;
if (!_cookieJar)
{
return false;
}
for (auto c = _cookieJar->begin(); c != _cookieJar->end(); ++c) {
if ((c->max_age.valid && ((c->date + c->max_age.duration) < now_gmt)) || (!c->max_age.valid && c->expires.valid && c->expires.date < now_gmt)) {
_cookieJar->erase(c);
@ -1682,5 +1690,6 @@ bool HTTPClient::generateCookieString(String *cookieString)
found = true;
}
}
return found;
}