Handle poorly-behaved callbacks more reliably #636
Merged
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.
If
startwrite()
is never called during a server callback, the clientmay be left waiting for a response and never get one. This can cause
lockups and general misery, especially when connections are proxied
through an intermediary (such as
nginx
) with a finite connectionlimit.
This PR detects a server callback that never calls
startwrite(http)
and throws an error, triggering the HTTP 500 mechanism. It also adds a
closewrite(http)
onto that branch as without it, it appears that thefinal chunk in the
Transfer-Encoding: Chunked
response may not appear.