diff options
author | ianb <devnull@localhost> | 2005-05-14 22:40:47 +0000 |
---|---|---|
committer | ianb <devnull@localhost> | 2005-05-14 22:40:47 +0000 |
commit | 2d9df0c6e85a20f434778510d10c7fb4c8eb5265 (patch) | |
tree | be0f40e68db3ea0267af25b85813f6747c8df809 /paste/cgitb_catcher.py | |
parent | a7cb65cf7a1b594e8cf35472b6bfe4bda19330cf (diff) | |
download | paste-2d9df0c6e85a20f434778510d10c7fb4c8eb5265.tar.gz |
Added start_response exc_info argument
Diffstat (limited to 'paste/cgitb_catcher.py')
-rw-r--r-- | paste/cgitb_catcher.py | 42 |
1 files changed, 2 insertions, 40 deletions
diff --git a/paste/cgitb_catcher.py b/paste/cgitb_catcher.py index b8f4915..732f7e1 100644 --- a/paste/cgitb_catcher.py +++ b/paste/cgitb_catcher.py @@ -19,8 +19,8 @@ def middleware(application, **kw): def start_application(environ, start_response): started = [] - def detect_start_response(status, headers): - started.append(start_response(status, headers)) + def detect_start_response(status, headers, exc_info=None): + started.append(start_response(status, headers, exc_info)) return started[0] try: @@ -55,41 +55,3 @@ def middleware(application, **kw): yield dummy_file.getvalue() return start_application - -def simple_middleware(application, **kw): - - def start_application(environ, start_response): - started = [] - - def detect_start_response(status, headers): - started.append(start_response(status, headers)) - return started[0] - - try: - app_iter = application(environ, start_response) - return catching_iter(app_iter) - except: - if not started: - write = start_response('500 Internal Server Error', - [('content-type', 'text/html')]) - else: - write = started[0] - - out = String() - traceback.print_exc(file=out) - return ['<html><body><pre>%s</pre></body></html>' - % out.getvalue()] - - def catching_iter(iter): - if not iter: - raise StopIteration - try: - for v in iter: - yield iter - except: - exc = sys.exc_info() - dummy_file = StringIO() - traceback.print_exc(file=dummy_file) - yield dummy_file.getvalue() - - return start_application |