@@ -60,7 +60,9 @@ def data_received(self, data: bytes):
6060 if isinstance (event , RequestReceived ):
6161 self .request_received (event .headers , event .stream_id )
6262 elif isinstance (event , DataReceived ):
63- self .receive_data (event .data , event .stream_id )
63+ self .receive_data (
64+ event .data , event .flow_controlled_length , event .stream_id
65+ )
6466 elif isinstance (event , StreamEnded ):
6567 self .stream_complete (event .stream_id )
6668 elif isinstance (event , ConnectionTerminated ):
@@ -109,10 +111,12 @@ def stream_complete(self, stream_id: int):
109111 self .conn .send_headers (stream_id , response_headers )
110112 asyncio .ensure_future (self .send_data (data , stream_id ))
111113
112- def receive_data (self , data : bytes , stream_id : int ):
114+ def receive_data (self , data : bytes , flow_controlled_length : int , stream_id : int ):
113115 """
114116 We've received some data on a stream. If that stream is one we're
115- expecting data on, save it off. Otherwise, reset the stream.
117+ expecting data on, save it off (and account for the received amount of
118+ data in flow control so that the client can send more data).
119+ Otherwise, reset the stream.
116120 """
117121 try :
118122 stream_data = self .stream_data [stream_id ]
@@ -122,6 +126,7 @@ def receive_data(self, data: bytes, stream_id: int):
122126 )
123127 else :
124128 stream_data .data .write (data )
129+ self .conn .acknowledge_received_data (flow_controlled_length , stream_id )
125130
126131 def stream_reset (self , stream_id ):
127132 """
0 commit comments