From 3a1374195b87356b7a50e6daa9782b6f62428c34 Mon Sep 17 00:00:00 2001 From: Tomasz Kramkowski Date: Fri, 24 Mar 2023 19:31:31 +0000 Subject: catch_exceptions: set exc_info in response --- paste/__init__.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/paste/__init__.py b/paste/__init__.py index 85afc63..f8985eb 100644 --- a/paste/__init__.py +++ b/paste/__init__.py @@ -1,4 +1,5 @@ import binascii +import sys import traceback from base64 import b64decode, b64encode from collections.abc import Callable, Iterable @@ -34,7 +35,9 @@ Response = Iterable[bytes] DB_PATH = "paste.sqlite3" -def simple_response(start_response: StartResponse, status: str) -> Response: +def simple_response( + start_response: StartResponse, status: str, exc_info: Optional[tuple] = None +) -> Response: body = (status + "\n").encode() start_response( status, @@ -42,6 +45,7 @@ def simple_response(start_response: StartResponse, status: str) -> Response: ("Content-Type", "text/plain"), ("Content-Length", str(len(body))), ], + exc_info, ) return [body] @@ -87,7 +91,9 @@ def catch_exceptions(app: App, environ: Env, start_response: StartResponse) -> R return app(environ, start_response) except Exception as e: print("".join(traceback.format_exception(type(e), e, e.__traceback__))) - return simple_response(start_response, "500 Internal Server Error") + return simple_response( + start_response, "500 Internal Server Error", sys.exc_info() + ) @middleware -- cgit v1.2.3-54-g00ecf