summaryrefslogtreecommitdiff
path: root/paste/errordocument.py
diff options
context:
space:
mode:
authorIan Bicking <ianb@colorstudy.com>2010-09-02 02:23:08 -0500
committerIan Bicking <ianb@colorstudy.com>2010-09-02 02:23:08 -0500
commitea5aa0eed5b326fb3470362b53dfbb54295e7e2a (patch)
tree5e96730abdebf8dbee51622497d68387b22dcb0c /paste/errordocument.py
parent4c4920adf7dde9634212ae56d7b8d37abdb92581 (diff)
downloadpaste-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.py11
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):
"""