diff --git a/CHANGES/14064.bugfix.rst b/CHANGES/14064.bugfix.rst new file mode 100644 index 00000000000..bdde8fe7891 --- /dev/null +++ b/CHANGES/14064.bugfix.rst @@ -0,0 +1,3 @@ +Fixed :class:`~aiohttp.CookieJar` keeping a cookie as a session cookie when its +``Expires`` attribute is ``Thu, 01 Jan 1970 00:00:00 GMT``, instead of deleting +it -- by :user:`spicysharkco`. diff --git a/aiohttp/cookiejar.py b/aiohttp/cookiejar.py index 12c781ce101..9f0462521e4 100644 --- a/aiohttp/cookiejar.py +++ b/aiohttp/cookiejar.py @@ -552,7 +552,7 @@ def _update_cookies( cookie["max-age"] = "" elif expires := cookie["expires"]: - if expire_time := self._parse_date(expires): + if (expire_time := self._parse_date(expires)) is not None: deadline = expire_time else: cookie["expires"] = "" diff --git a/tests/test_cookiejar.py b/tests/test_cookiejar.py index ed8f8525951..f78acafe788 100644 --- a/tests/test_cookiejar.py +++ b/tests/test_cookiejar.py @@ -1075,6 +1075,17 @@ async def test_cookie_jar_filter_cookies_expires() -> None: assert len(jar) == 0 +def test_cookie_jar_epoch_expires_deletes_cookie() -> None: + jar = CookieJar() + url = URL("https://example.com/") + jar.update_cookies_from_headers(["sid=old"], url) + jar.update_cookies_from_headers( + ["sid=; Expires=Thu, 01 Jan 1970 00:00:00 GMT"], url + ) + + assert len(jar.filter_cookies(url)) == 0 + + async def test_cookie_jar_heap_cleanup() -> None: """Test that the heap gets cleaned up when there are many old expirations.""" jar = CookieJar()