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 work is part of BMO #1261900.
Gecko's MSE implementation needs to be able to run nestegg_read_packet
until it hits EOS, producing every packet it can parse, and then restore
the parser state when new data is appended to the stream and resume
parsing from the last valid block.
nestegg_read_reset introduces a way to reset the parser context to the
beginning of the last point before a nestegg_read_packet call returned
EOS. If the stream then has sufficient data appended to it, a
subsequent call to nestegg_read_packet is then expected to produce the
next packet(s) without producing any previously parsed packets.
Note that this mode requires the caller to carefully manage the EOS
state so that it can distinguish between "fake" EOS and "real" EOS.
Removing the general ne_parse machinery from nestegg_read_packet
significantly reduces the potential state changes to rollback on reset.
The small amount of remaining state is saved with ne_ctx_save and
restored via ne_ctx_restore.