python-hyper / hyper

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

ConnectionResetError after certain number of HTTP/1.1 requests #398

Open nkemnitz opened 5 years ago

nkemnitz commented 5 years ago

Ran into an issue while testing/benchmarking several hundreds of HTTP/1.1 HEAD requests, which would always result in a ConnectionResetError after the exact same number of requests.

Investigating the issue shows that it always occurs when the BufferedSockets _remaining_capacity is getting close to 0. More specifically, it happens whenever there are still a few bytes_in_buffer when fill is called on the almost "exhausted" buffer, as it will be the case here: https://github.com/Lukasa/hyper/blob/18b629b8487169870235fe13387e2ae03c178b9f/hyper/http11/connection.py#L284-L288