Support for configurable timeouts #17
Open
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.
Minimal support for TCP timeouts, with tests.
There are several issues remaining in the code. In particular, several of the "Begin..." asynchronous I/O functions actually call the blocking Write functions on the socket, and are therefore dependent on the socket's SendTimeout if a connection is abandoned. A thread that is using timeouts with "async" could still end up blocking forever if a socket is abandoned at exactly the right time, although this is not necessariy an urgent problem: this issue is mostly applicable to flushing headers, and these fit into I/O buffers most of the time.
The timeouts as documented should time the "total time" to perform an action, for example to read the header, but this code applies the timeouts to indivual read/write operations. Therefore, the listener is still vulnerable to tarpit style DOS attacks.