amphp / http-client

An advanced async HTTP client library for PHP, enabling efficient, non-blocking, and concurrent requests and responses.
https://amphp.org/http-client
MIT License
704 stars 66 forks source link

Fix ConnectionLimitingPool closing non-idle connections #278

Closed descawed closed 4 years ago

descawed commented 4 years ago

Fix for #277. I've included a test as well, although it's kind of a mess. The closures modifying each other's values by reference is kind of hacky, and the value of $numRequests is based on the hard-coded limit of 64 in ConnectionLimitingPool->onReadyConnection. I had to actually implement the onClose callbacks to test when the pool closes idle connections, and I don't think I can use a PHPUnit expectation to verify when the connection is closed because we need to know that the connection was closed after the request promise was fulfilled, not just after the method was called. I'm open to any suggestions on how to improve it.

kelunik commented 4 years ago

Hey @descawed, thanks for the fix!