diff options
author | Ian Bicking <ianb@colorstudy.com> | 2010-09-02 02:23:08 -0500 |
---|---|---|
committer | Ian Bicking <ianb@colorstudy.com> | 2010-09-02 02:23:08 -0500 |
commit | ea5aa0eed5b326fb3470362b53dfbb54295e7e2a (patch) | |
tree | 5e96730abdebf8dbee51622497d68387b22dcb0c /paste/errordocument.py | |
parent | 4c4920adf7dde9634212ae56d7b8d37abdb92581 (diff) | |
download | paste-ea5aa0eed5b326fb3470362b53dfbb54295e7e2a.tar.gz |
Improve errors when fetching an error page: http://trac.pythonpaste.org/pythonpaste/ticket/123
Diffstat (limited to 'paste/errordocument.py')
-rw-r--r-- | paste/errordocument.py | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/paste/errordocument.py b/paste/errordocument.py index 4b9701a..d3d35bb 100644 --- a/paste/errordocument.py +++ b/paste/errordocument.py @@ -11,7 +11,7 @@ URL where the content can be displayed to the user as an error document. import warnings from urlparse import urlparse -from paste.recursive import ForwardRequestException, RecursiveMiddleware +from paste.recursive import ForwardRequestException, RecursiveMiddleware, RecursionLoop from paste.util import converters from paste.response import replace_header @@ -81,7 +81,14 @@ class StatusKeeper(object): else: environ['QUERY_STRING'] = '' #raise Exception(self.url, self.status) - return self.app(environ, keep_status_start_response) + try: + return self.app(environ, keep_status_start_response) + except RecursionLoop, e: + environ['wsgi.errors'].write('Recursion error getting error page: %s\n' % e) + keep_status_start_response('500 Server Error', [('Content-type', 'text/plain')]) + return ['Error: %s. (Error page could not be fetched)' + % self.status] + class StatusBasedForward(object): """ |