From 2f81f466a89ca07ee9860371b12d3c7376d9b615 Mon Sep 17 00:00:00 2001 From: Tim Graham Date: Mon, 14 Mar 2016 09:55:27 -0400 Subject: [PATCH] Removed a workaround for a cookie encoding bug [1] in Python < 2.7.2. [1] http://bugs.python.org/issue9824 --- django/http/cookie.py | 29 +---------------------------- 1 file changed, 1 insertion(+), 28 deletions(-) diff --git a/django/http/cookie.py b/django/http/cookie.py index a3dbd2a0b2..2714a30638 100644 --- a/django/http/cookie.py +++ b/django/http/cookie.py @@ -6,8 +6,6 @@ from django.utils import six from django.utils.encoding import force_str from django.utils.six.moves import http_cookies -# Some versions of Python 2.7 and later won't need this encoding bug fix: -_cookie_encodes_correctly = http_cookies.SimpleCookie().value_encode(';') == (';', '"\\073"') # See ticket #13007, http://bugs.python.org/issue2193 and http://trac.edgewall.org/ticket/2256 _tc = http_cookies.SimpleCookie() try: @@ -23,7 +21,7 @@ cookie_pickles_properly = ( sys.version_info >= (3, 4, 3) ) -if _cookie_encodes_correctly and _cookie_allows_colon_in_names and cookie_pickles_properly: +if _cookie_allows_colon_in_names and cookie_pickles_properly: SimpleCookie = http_cookies.SimpleCookie else: Morsel = http_cookies.Morsel @@ -39,31 +37,6 @@ else: else: super(SimpleCookie, self).__setitem__(key, value) - if not _cookie_encodes_correctly: - def value_encode(self, val): - # Some browsers do not support quoted-string from RFC 2109, - # including some versions of Safari and Internet Explorer. - # These browsers split on ';', and some versions of Safari - # are known to split on ', '. Therefore, we encode ';' and ',' - - # SimpleCookie already does the hard work of encoding and decoding. - # It uses octal sequences like '\\012' for newline etc. - # and non-ASCII chars. We just make use of this mechanism, to - # avoid introducing two encoding schemes which would be confusing - # and especially awkward for javascript. - - # NB, contrary to Python docs, value_encode returns a tuple containing - # (real val, encoded_val) - val, encoded = super(SimpleCookie, self).value_encode(val) - - encoded = encoded.replace(";", "\\073").replace(",", "\\054") - # If encoded now contains any quoted chars, we need double quotes - # around the whole string. - if "\\" in encoded and not encoded.startswith('"'): - encoded = '"' + encoded + '"' - - return val, encoded - if not _cookie_allows_colon_in_names: def load(self, rawdata): self.bad_cookies = set()