Ensure transport closed info is always handled properly #78
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 PR restores the behavior prior to 1.4.0, where arriving
tcp_closed
info triggersondisconnect/2
callback regardless of the client's state.Problem
In versions 1.4.0 and later, the
ondisconnect/2
callback is only triggered in theconnected
andhandshaking
states.This change prevents the callback from being invoked if
tcp_closed
info arrives after receiving a Close frame.Additional Explanation
While it may seem counterintuitive to expect
tcp_closed
info in thedisconnected
state, this happens because the client enters thedisconnected
state after receiving a Close frame (and before the connection is actually closed).An ideal approach might be introducing a new state, which partially corresponds to the CLOSING state stated in RFC 6455 (related to #17).
However, since such change should be done in accordance with #62, I chose to restore the previous behavior.