Resolve deadlock issue in TLSSocketChannel #165
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.
This introduces a comprehensive test suite for testing thousands of
different buffer size, network frame size and message size combinations
for the TLSSocketChannel.
This test uncovered several issues, notably it found a blocking issue
that is resolved in this commit as well, where the hand shake portion
of the exchange would also read a bit "into" user data space, and that
data would then get lost - subsequently, when the client layer asked for
the amount of data it "expected" to be in place, it'd block indefinitely
because of that lost data ensuring we'd never add up to the expected amount.
Notably, this commit also removes four unit tests. These tests are covered
by the more comprehensive test, and were rather mock and stub heavy, meaning
it seemed preferrable to remove them than to refactor them to work with the
changes to the implementation