fix: panicked when a reset stream would decrement twice #685
+6
−15
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 noticed in logs that when a stream was dropped, and thus within
transition
and ready to expire as a locally reset stream, it would then pop its related push promises, and those could trigger the original stream to calltransition_after
. The end result is that the original stream would calldec_num_reset_streams()
twice.This gets rid of a dangerous call to
transition_after
that is happening outside the bounds of a transition. It ends up making newer streams that are locally reset to get forgotten, instead of older streams, but that's not really better or worse.There is a fuzz seed that triggered the panic, and with this change, that fuzz seed no longer panics.