python-hyper / hyper

HTTP/2 for Python.
http://hyper.rtfd.org/en/latest/
MIT License
1.05k stars 191 forks source link

END_STREAM not marked when last chunk of length MAX_CHUNK #355

Open PrimozGodec opened 6 years ago

PrimozGodec commented 6 years ago

https://github.com/Lukasa/hyper/blob/13e2a909e14349d14ae2b86217062e1568242b9a/hyper/http20/stream.py#L330

End of the stream is not marked when the last chunk is of size equal to MAX_CHUNK (1024). Condition len(data) < MAX_CHUNK works fine in all cases when the last chunk is of size smaller than 1024 but not in case when last chunk is of size 1024. If we change this to len(data) <= MAX_CHUNK it wont work since we will mark END_STREAM for every chunk. Suggested solution is to make another argument that tell you when you have a last chunk.