diff --git a/sanic/app.py b/sanic/app.py index 8eceec9a..fbe785d9 100644 --- a/sanic/app.py +++ b/sanic/app.py @@ -57,6 +57,7 @@ from sanic.compat import OS_IS_WINDOWS, enable_windows_color_support from sanic.config import SANIC_PREFIX, Config from sanic.exceptions import ( BadRequest, + PayloadTooLarge, SanicException, ServerError, URLBuildError, @@ -933,9 +934,11 @@ class Sanic(StaticHandleMixin, BaseSanic, StartupMixin, metaclass=TouchUpMeta): and request.stream.request_body and not route.extra.ignore_body ): + if hasattr(handler, "is_stream"): - # Streaming handler: lift the size limit - request.stream.request_max_size = float("inf") + rq_len = request.stream.request_bytes + if rq_len and rq_len > request.stream.request_max_size: + raise PayloadTooLarge("Request body exceeds the size limit") else: # Non-streaming handler: preload body await request.receive_body()