From 21d54fd261b972bbdb7f4eea267f4696c6958600 Mon Sep 17 00:00:00 2001 From: Helmut Grohne Date: Sun, 15 Apr 2007 17:48:38 +0200 Subject: TracebackMiddleware catches more exceptions --- wsgitools/middlewares.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/wsgitools/middlewares.py b/wsgitools/middlewares.py index ffb2e38..a0b4a7c 100644 --- a/wsgitools/middlewares.py +++ b/wsgitools/middlewares.py @@ -278,7 +278,17 @@ class TracebackMiddleware: def __call__(self, environ, start_response): """wsgi interface""" try: - return self.app(environ, start_response) + ret = self.app(environ, start_response) + if isinstance(ret, list): + return ret + # Take the first element of the iterator and possibly catch an + # exception there. + ret = iter(ret) + try: + first = ret.next() + except StopIteration: + return CloseableList(getattr(ret, "close", None), []) + return CloseableIterator(getattr(ret, "close", None), [first], ret) except: exc_info = sys.exc_info() data = cgitb.html(exc_info) -- cgit v1.2.3