From 2d12e362ce10ef35887aaa38ae074645581c383e Mon Sep 17 00:00:00 2001 From: shr7q Date: Wed, 22 Apr 2026 19:32:44 -0400 Subject: [PATCH] fix: Improve error messages on simple after request hook bugs Root cause: In `src/flask/app.py`, the `process_response` method calls each `after_request` function and reassigns the response to its return value without checking whether the return value is `None`. When a hook Resolved by BugSlayer --- src/flask/app.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/flask/app.py b/src/flask/app.py index 652b9bbf..2161b83e 100644 --- a/src/flask/app.py +++ b/src/flask/app.py @@ -1406,11 +1406,21 @@ class Flask(App): """ for func in ctx._after_request_functions: response = self.ensure_sync(func)(response) + if response is None: + raise TypeError( + f"The after_request handler '{func.__name__}' must return a" + " Response object. It returned None." + ) for name in chain(ctx.request.blueprints, (None,)): if name in self.after_request_funcs: for func in reversed(self.after_request_funcs[name]): response = self.ensure_sync(func)(response) + if response is None: + raise TypeError( + f"The after_request handler '{func.__name__}' must return a" + " Response object. It returned None." + ) if not self.session_interface.is_null_session(ctx._get_session()): self.session_interface.save_session(self, ctx._get_session(), response)