Consistently close HTTP client connections when response stream closes #484
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This changeset improves how the HTTP client closes outgoing TCP/IP connections when the response stream closes. This should not affect "normal" operation of well-behaving peers, but would be relatively easy to trigger depending on which HTTP headers the request and response specified. Previously, connections may have been kept in an idle state instead of properly closing the connection and freeing underlying system resources.
Applying these changes required a significant refactoring of the existing logic first and also happens to be a prerequisite for upcoming HTTP keep-alive handling that will be taken care of in a follow-up PR. This does not otherwise affect the public
React\Http\Browser
class or any other public APIs, so this should be safe to apply. The test suite confirms this has 100% code coverage and does not otherwise affect our public APIs.Builds on top of #481 and #480
Done in preparation for #468 (HTTP keep-alive)
Also refs #376 (future support for HTTP upgrades)