From 69d9c8ea55daf4e68d4dc014425036cd870e4b6a Mon Sep 17 00:00:00 2001 From: Jonathan Slenders Date: Fri, 16 Feb 2024 12:03:50 +0000 Subject: [PATCH] Fix 'no response returned' RuntimeError during cancellation in BaseHTTPMiddleware. If an incoming request is disconnected before a response gets produced, don't raise a RuntimeError. --- starlette/middleware/base.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/starlette/middleware/base.py b/starlette/middleware/base.py index ad3ffcfee..a2f263fd2 100644 --- a/starlette/middleware/base.py +++ b/starlette/middleware/base.py @@ -163,6 +163,8 @@ async def coro() -> None: except anyio.EndOfStream: if app_exc is not None: raise app_exc + if request._is_disconnected: + return Response() # pragma: nocover raise RuntimeError("No response returned.") assert message["type"] == "http.response.start"