diff options
author | Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> | 2019-09-13 11:47:51 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-09-13 11:47:51 (GMT) |
commit | 44cb89a78a308b7a613bdd01539ec84be914d693 (patch) | |
tree | 05cb269aab75c3a5a87afbffd7132506123da018 | |
parent | b9bfe143d151d184615fa3890f78874c5d4ed4c6 (diff) | |
download | cpython-44cb89a78a308b7a613bdd01539ec84be914d693.zip cpython-44cb89a78a308b7a613bdd01539ec84be914d693.tar.gz cpython-44cb89a78a308b7a613bdd01539ec84be914d693.tar.bz2 |
bpo-12144: Handle cookies with expires attribute in CookieJar.make_cookies (GH-13921)
Handle time comparison for cookies with `expires` attribute when `CookieJar.make_cookies` is called.
Co-authored-by: Demian Brecht <demianbrecht@gmail.com>
https://bugs.python.org/issue12144
Automerge-Triggered-By: @asvetlov
(cherry picked from commit bb41147eab15a2958f4ad38261e5bf608f6ace1b)
Co-authored-by: Xtreak <tir.karthi@gmail.com>
-rw-r--r-- | Lib/http/cookiejar.py | 3 | ||||
-rw-r--r-- | Lib/test/test_http_cookiejar.py | 9 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Library/2019-06-08-23-26-58.bpo-12144.Z7mz-q.rst | 2 |
3 files changed, 12 insertions, 2 deletions
diff --git a/Lib/http/cookiejar.py b/Lib/http/cookiejar.py index db82382..adc7ed6 100644 --- a/Lib/http/cookiejar.py +++ b/Lib/http/cookiejar.py @@ -1593,6 +1593,7 @@ class CookieJar: headers = response.info() rfc2965_hdrs = headers.get_all("Set-Cookie2", []) ns_hdrs = headers.get_all("Set-Cookie", []) + self._policy._now = self._now = int(time.time()) rfc2965 = self._policy.rfc2965 netscape = self._policy.netscape @@ -1672,8 +1673,6 @@ class CookieJar: _debug("extract_cookies: %s", response.info()) self._cookies_lock.acquire() try: - self._policy._now = self._now = int(time.time()) - for cookie in self.make_cookies(response, request): if self._policy.set_ok(cookie, request): _debug(" setting cookie: %s", cookie) diff --git a/Lib/test/test_http_cookiejar.py b/Lib/test/test_http_cookiejar.py index 22bf41c..853a400 100644 --- a/Lib/test/test_http_cookiejar.py +++ b/Lib/test/test_http_cookiejar.py @@ -585,6 +585,15 @@ class CookieTests(unittest.TestCase): # if expires is in future, keep cookie... c = CookieJar() future = time2netscape(time.time()+3600) + + with test.support.check_no_warnings(self): + headers = [f"Set-Cookie: FOO=BAR; path=/; expires={future}"] + req = urllib.request.Request("http://www.coyote.com/") + res = FakeResponse(headers, "http://www.coyote.com/") + cookies = c.make_cookies(res, req) + self.assertEqual(len(cookies), 1) + self.assertEqual(time2netscape(cookies[0].expires), future) + interact_netscape(c, "http://www.acme.com/", 'spam="bar"; expires=%s' % future) self.assertEqual(len(c), 1) diff --git a/Misc/NEWS.d/next/Library/2019-06-08-23-26-58.bpo-12144.Z7mz-q.rst b/Misc/NEWS.d/next/Library/2019-06-08-23-26-58.bpo-12144.Z7mz-q.rst new file mode 100644 index 0000000..ee802f8 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2019-06-08-23-26-58.bpo-12144.Z7mz-q.rst @@ -0,0 +1,2 @@ +Ensure cookies with ``expires`` attribute are handled in +:meth:`CookieJar.make_cookies`. |