Improve CborStreamReader Logic to Handle Nesting and End-of-Buffer Corner Cases #3956
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.
Description
This PR updates the
CborStreamReader
streaming logic to correctly handle scenarios where the buffer ends just after an item was read, particularly when working with nested containers.Previously, the streaming CBOR reader could incorrectly signal completion when the current buffer segment ended but nested containers were still open. This caused issues with large or segmented CBOR payloads where container boundaries did not align with buffer boundaries.
PeekState() == Finished
as a final read state when there are still open containers in the nesting stack.EndArray
orEndMap
is explicitly read when end-of-current-buffer-part scenarios.Motivation and Context
DOTNET-8252
Testing
DRY_RUN-08c395ab-328f-4d34-8928-282cecedfd90
Screenshots (if appropriate)
Types of changes
Checklist
License