Fix keepalive timeout task will not execute to close transport #1192
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.
When transport can not kick off the HTTP protocol, the
on_response_complete
method will not be executed to start a keep-alive timeout task, in this situation if the client-side stream sends EOF, the server-side will not close this transport by timeout task and this TCP connection will keepCLOSE_WAIT
status.Start a TCP connection with telnet can replicate this issue. Expect the connection should be close after the keep-alive is timeout.
Relates to #160. Some applications like Chrome or wrk will start a TCP connection to send empty-bytes at first before start the HTTP protocol TCP connection.