Made CookieStorage account for the overhead added by the underlying cookie encoding

git-svn-id: http://code.djangoproject.com/svn/django/trunk@12285 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Luke Plant 2010-01-23 23:56:04 +00:00
parent 7f944a2b68
commit 63d072581c
1 changed files with 6 additions and 1 deletions

View File

@ -86,7 +86,12 @@ class CookieStorage(BaseStorage):
unstored_messages = [] unstored_messages = []
encoded_data = self._encode(messages) encoded_data = self._encode(messages)
if self.max_cookie_size: if self.max_cookie_size:
while encoded_data and len(encoded_data) > self.max_cookie_size: # data is going to be stored eventually by CompatCookie, which
# adds it's own overhead, which we must account for.
def stored_length(val):
return len(CompatCookie().value_encode(val)[1])
while encoded_data and stored_length(encoded_data) > self.max_cookie_size:
if remove_oldest: if remove_oldest:
unstored_messages.append(messages.pop(0)) unstored_messages.append(messages.pop(0))
else: else: