@@ -60,7 +60,9 @@ def data_received(self, data: bytes):
60
60
if isinstance (event , RequestReceived ):
61
61
self .request_received (event .headers , event .stream_id )
62
62
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
+ )
64
66
elif isinstance (event , StreamEnded ):
65
67
self .stream_complete (event .stream_id )
66
68
elif isinstance (event , ConnectionTerminated ):
@@ -109,10 +111,12 @@ def stream_complete(self, stream_id: int):
109
111
self .conn .send_headers (stream_id , response_headers )
110
112
asyncio .ensure_future (self .send_data (data , stream_id ))
111
113
112
- def receive_data (self , data : bytes , stream_id : int ):
114
+ def receive_data (self , data : bytes , flow_controlled_length : int , stream_id : int ):
113
115
"""
114
116
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.
116
120
"""
117
121
try :
118
122
stream_data = self .stream_data [stream_id ]
@@ -122,6 +126,7 @@ def receive_data(self, data: bytes, stream_id: int):
122
126
)
123
127
else :
124
128
stream_data .data .write (data )
129
+ self .conn .acknowledge_received_data (flow_controlled_length , stream_id )
125
130
126
131
def stream_reset (self , stream_id ):
127
132
"""
0 commit comments