MCPcopy
hub / github.com/benoitc/gunicorn / _handle_data_received

Method _handle_data_received

gunicorn/http2/connection.py:243–275  ·  view source on GitHub ↗

Handle DataReceived event. Args: event: DataReceived event with body data Returns: None (request completion handled by StreamEnded)

(self, event)

Source from the content-addressed store, hash-verified

241 stream.receive_headers(headers, end_stream=False)
242
243 def _handle_data_received(self, event):
244 """Handle DataReceived event.
245
246 Args:
247 event: DataReceived event with body data
248
249 Returns:
250 None (request completion handled by StreamEnded)
251 """
252 stream_id = event.stream_id
253 data = event.data
254
255 stream = self.streams.get(stream_id)
256 if stream is None:
257 # Stream was reset or doesn't exist
258 return None
259
260 stream.receive_data(data, end_stream=False)
261
262 # Increment flow control windows (only if data received)
263 if len(data) > 0:
264 try:
265 # Update stream-level window
266 self.h2_conn.increment_flow_control_window(len(data), stream_id=stream_id)
267 # Update connection-level window
268 self.h2_conn.increment_flow_control_window(len(data), stream_id=None)
269 # Send WINDOW_UPDATE frames immediately
270 self._send_pending_data()
271 except (ValueError, _h2_exceptions.FlowControlError):
272 # Window overflow - send FLOW_CONTROL_ERROR and close
273 self.close(error_code=HTTP2ErrorCode.FLOW_CONTROL_ERROR)
274
275 return None
276
277 def _handle_stream_ended(self, event):
278 """Handle StreamEnded event.

Callers 1

_handle_eventMethod · 0.95

Calls 4

_send_pending_dataMethod · 0.95
closeMethod · 0.95
getMethod · 0.45
receive_dataMethod · 0.45

Tested by

no test coverage detected