sctp: Make most chunk handling errors non-fatal #716
Merged
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.
Some parts of the SCTP spec isn't fully implemented, which can lead to spurious errors during chunk processing (e.g.
ErrHandleInitState). To compensate, pion treats most chunk handling errors as non-fatal.This change adopts pion's behavior (pion/sctp/association.go#L2756), and also fixes
ErrChunkTypeUnhandledto ignore the rest of the SCTP packet, as stated in section 3.2. of the spec.We have observed
ErrHandleInitStatewith browser peers with intermittently poor network conditions, leading to permanently frozen data channels even after the network conditions improve.