From a0e5d981cdd4f60244ae9829e38e9bc783674e9a Mon Sep 17 00:00:00 2001 From: Robert Collins Date: Tue, 4 Aug 2015 10:06:29 +1200 Subject: [PATCH] Issue #23888: Handle fractional time in cookie expiry. Patch by ssh. --- Lib/http/cookiejar.py | 2 +- Lib/test/test_http_cookiejar.py | 9 +++++++++ Misc/NEWS | 2 ++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/Lib/http/cookiejar.py b/Lib/http/cookiejar.py index bfc6ae99932..92ead538c5a 100644 --- a/Lib/http/cookiejar.py +++ b/Lib/http/cookiejar.py @@ -758,7 +758,7 @@ class Cookie: ): if version is not None: version = int(version) - if expires is not None: expires = int(expires) + if expires is not None: expires = int(float(expires)) if port is None and port_specified is True: raise ValueError("if port is None, port_specified must be false") diff --git a/Lib/test/test_http_cookiejar.py b/Lib/test/test_http_cookiejar.py index e9f03560507..50260ffe5ce 100644 --- a/Lib/test/test_http_cookiejar.py +++ b/Lib/test/test_http_cookiejar.py @@ -566,6 +566,15 @@ class CookieTests(unittest.TestCase): self.assertEqual(len(c), 1) self.assertIn('spam="bar"', h) + # test if fractional expiry is accepted + cookie = Cookie(0, "name", "value", + None, False, "www.python.org", + True, False, "/", + False, False, "1444312383.018307", + False, None, None, + {}) + self.assertEqual(cookie.expires, 1444312383) + # XXX RFC 2965 expiry rules (some apply to V0 too) def test_default_path(self): diff --git a/Misc/NEWS b/Misc/NEWS index f3348c14b10..822184b4e2e 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -66,6 +66,8 @@ Core and Builtins Library ------- +- Issue #23888: Handle fractional time in cookie expiry. Patch by ssh. + - Issue #23652: Make it possible to compile the select module against the libc headers from the Linux Standard Base, which do not include some EPOLL macros. Patch by Matt Frank.