Fix ChainedStream to handle partial reads #143
Closed
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.
I was working with MimeKit to read an HttpWebResponse and found that the content was not being fully read. Apparently Stream.Read can return fewer bytes than requested and the response stream will. This fixes ChainedStream to continue reading until the entire expected read is fulfilled. An alternative solution would be to pass partial reads through.
I also modified the ChainedStream tests to utilize a stream that always partial reads. This causes the last three tests to fail and the fix corrects them. I wasn't sure if this would be better a separate test or not. I can also confirm that this did fix my issue with HttpWebResponse.
Let me know if there is anything else I can do to make this a better fit for the project.