Permalink
Browse files

Added better error reporting for unicode errors in sessions

  • Loading branch information...
1 parent 8339cb3 commit 2b885ce4dc3f6b2ea2707a39a8198a84d7ad3991 @mitsuhiko mitsuhiko committed Oct 30, 2012
Showing with 17 additions and 0 deletions.
  1. +6 −0 flask/debughelpers.py
  2. +11 −0 flask/sessions.py
View
@@ -10,6 +10,12 @@
"""
+class UnexpectedUnicodeError(AssertionError, UnicodeError):
+ """Raised in places where we want some better error reporting for
+ unexpected unicode or binary data.
+ """
+
+
class DebugFilesKeyError(KeyError, AssertionError):
"""Raised from request.files during debugging. The idea is that it can
provide a better error message than just a generic KeyError/BadRequest.
View
@@ -66,6 +66,14 @@ def _tag(value):
return {' d': http_date(value)}
elif isinstance(value, dict):
return dict((k, _tag(v)) for k, v in value.iteritems())
+ elif isinstance(value, str):
+ try:
+ return unicode(value)
+ except UnicodeError:
+ raise UnexpectedUnicodeError(u'A byte string with '
+ u'non-ASCII data was passed to the session system '
+ u'which can only store unicode strings. Consider '
+ u'base64 encoding your string (String was %r)' % value)
return value
return json.dumps(_tag(value), separators=(',', ':'))
@@ -292,3 +300,6 @@ def save_session(self, app, session, response):
response.set_cookie(app.session_cookie_name, val,
expires=expires, httponly=httponly,
domain=domain, path=path, secure=secure)
+
+
+from flask.debughelpers import UnexpectedUnicodeError

0 comments on commit 2b885ce

Please sign in to comment.