This repository has been archived by the owner on Feb 12, 2022. It is now read-only.
let KeepAliveSender detect if websocket is no longer alive - fixes #6447 (non GCM) #49
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.
let KeepAliveSender detect if the websocket is no longer alive and trigger recreation of SignalServiceMessagePipe - fixes signalapp/Signal-Android#6447 for non GCM devices
By not checking for the response of the keep alive message it is not detected when the device goes from mobile -> WiFi or vice versa. Thus we keep sending the keep alive message to a broken pipe over and over for no reason. While we will not get push messages from the server, because we do not have a working active connection to it. I fixed the problem by listening for 30seconds to the future (line 298) created by sending the keep alive message and if we do not get a response within these 30 seconds, the connection is killed -> WebSocketConnection.client = null -> WebSocketConnection.readRequest will throw IOException("Connection closed!") -> SignalServiceMessageReceiver.MessageRetrievalThread.run will catch it and create a new SignalServiceMessagePipe utilizing the new network and we keep subscribed for push messages :-)