bugfix: Fix eventstream partial read #3165
Open
+149
−2
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.
Issue #, if available
#3110
Description of changes:
This pull request fixes a bug in
NonSeekableStreamDecodingEventStreamIterator
wherereadAndHashBytes()
assumed that the underlying stream would always return the full number of requested bytes in a singleread(
) call.In cases where the stream returns fewer bytes (e.g., partial reads from network streams or large payloads), this could result in truncated payloads and CRC mismatches.
The fix updates
readAndHashBytes()
to:A new unit test
testReadAndHashBytesHandlesPartialReads
has been added to verify this behavior by simulating a non-seekable stream that returns partial data in eachread()
call.All tests pass with
make test
.By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.