Skip to content

Commit 08dee02

Browse files
Vicente RuizVicente Ruiz
authored andcommitted
Merge upstream PR pgjones#334 from pgjones/hypercorn: Bugfix handle already-closed on DataReceived
Original PR: pgjones#334
2 parents 897130a + 1e524fe commit 08dee02

1 file changed

Lines changed: 10 additions & 6 deletions

File tree

  • src/hypercorn/protocol

src/hypercorn/protocol/h2.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -256,12 +256,16 @@ async def _handle_events(self, events: list[h2.events.Event]) -> None:
256256
if self.keep_alive_requests > self.config.keep_alive_max_requests:
257257
self.connection.close_connection()
258258
elif isinstance(event, h2.events.DataReceived):
259-
await self.streams[event.stream_id].handle(
260-
Body(stream_id=event.stream_id, data=event.data)
261-
)
262-
self.connection.acknowledge_received_data(
263-
event.flow_controlled_length, event.stream_id
264-
)
259+
try:
260+
await self.streams[event.stream_id].handle(
261+
Body(stream_id=event.stream_id, data=event.data)
262+
)
263+
self.connection.acknowledge_received_data(
264+
event.flow_controlled_length, event.stream_id
265+
)
266+
except KeyError:
267+
# Data received while already closed, nothing to do.
268+
pass
265269
elif isinstance(event, h2.events.StreamEnded):
266270
try:
267271
await self.streams[event.stream_id].handle(EndBody(stream_id=event.stream_id))

0 commit comments

Comments
 (0)