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.
There are a couple cases where a socket would create a new connection without closing an existing one.
!connected
and!isConnecting
, so a secondconnect
would go through creating a new pair of streams without disconnecting the first pair.disconnect
without a timeout only sends a close message to the server, if we tried toconnect
the socket again before the connection was closed it would not disconnect the previous streams.In any of those cases we end up with a
NSInputStream
that still has theWebSocket
as a delegate, but it's no longer referenced ininputStream
. If theWebSocket
is deallocated, it wouldn't clean up the delegate on that stream, and if it received any data, it would try to forward it to a deallocated object, which would crash.This should fix #272