@@ -91,6 +91,7 @@ async def __call__(self, scope: Scope, receive: Receive, send: Send) -> None:
91
91
92
92
async def receive_wrapper () -> Message :
93
93
nonlocal request_body , request_body_too_large
94
+
94
95
message = await receive ()
95
96
if message ["type" ] == "http.request" and self .capture_request_body and not request_body_too_large :
96
97
request_body += message .get ("body" , b"" )
@@ -109,6 +110,7 @@ async def send_wrapper(message: Message) -> None:
109
110
response_chunked , \
110
111
response_content_type , \
111
112
response_size
113
+
112
114
if message ["type" ] == "http.response.start" :
113
115
response_time = time .perf_counter () - start_time
114
116
response_status = message ["status" ]
@@ -120,9 +122,11 @@ async def send_wrapper(message: Message) -> None:
120
122
response_content_type = response_headers .get ("Content-Type" )
121
123
response_size = parse_int (response_headers .get ("Content-Length" )) if not response_chunked else 0
122
124
response_body_too_large = response_size is not None and response_size > MAX_BODY_SIZE
125
+
123
126
elif message ["type" ] == "http.response.body" :
124
127
if response_chunked and response_size is not None :
125
128
response_size += len (message .get ("body" , b"" ))
129
+
126
130
if (
127
131
(self .capture_response_body or response_status == 422 )
128
132
and RequestLogger .is_supported_content_type (response_content_type )
@@ -132,6 +136,11 @@ async def send_wrapper(message: Message) -> None:
132
136
if len (response_body ) > MAX_BODY_SIZE :
133
137
response_body_too_large = True
134
138
response_body = b""
139
+
140
+ if self .capture_client_disconnects and await request .is_disconnected ():
141
+ # Client closed connection (report NGINX specific status code)
142
+ response_status = 499
143
+
135
144
await send (message )
136
145
137
146
try :
@@ -142,9 +151,6 @@ async def send_wrapper(message: Message) -> None:
142
151
finally :
143
152
if response_time is None :
144
153
response_time = time .perf_counter () - start_time
145
- if self .capture_client_disconnects and await request .is_disconnected ():
146
- # Client closed connection (report NGINX specific status code)
147
- response_status = 499
148
154
self .add_request (
149
155
timestamp = timestamp ,
150
156
request = request ,
0 commit comments