Simplified _cookie_allows_colon_in_names condition.

This commit is contained in:
Tim Graham 2016-03-14 10:24:51 -04:00
parent 2f81f466a8
commit 59df07738c
1 changed files with 3 additions and 8 deletions

View File

@ -6,13 +6,8 @@ from django.utils import six
from django.utils.encoding import force_str from django.utils.encoding import force_str
from django.utils.six.moves import http_cookies from django.utils.six.moves import http_cookies
# See ticket #13007, http://bugs.python.org/issue2193 and http://trac.edgewall.org/ticket/2256 # http://bugs.python.org/issue2193 is fixed in Python 3.3+.
_tc = http_cookies.SimpleCookie() _cookie_allows_colon_in_names = six.PY3
try:
_tc.load(str('foo:bar=1'))
_cookie_allows_colon_in_names = True
except http_cookies.CookieError:
_cookie_allows_colon_in_names = False
# Cookie pickling bug is fixed in Python 2.7.9 and Python 3.4.3+ # Cookie pickling bug is fixed in Python 2.7.9 and Python 3.4.3+
# http://bugs.python.org/issue22775 # http://bugs.python.org/issue22775
@ -40,7 +35,7 @@ else:
if not _cookie_allows_colon_in_names: if not _cookie_allows_colon_in_names:
def load(self, rawdata): def load(self, rawdata):
self.bad_cookies = set() self.bad_cookies = set()
if six.PY2 and isinstance(rawdata, six.text_type): if isinstance(rawdata, six.text_type):
rawdata = force_str(rawdata) rawdata = force_str(rawdata)
super(SimpleCookie, self).load(rawdata) super(SimpleCookie, self).load(rawdata)
for key in self.bad_cookies: for key in self.bad_cookies: