diff --git a/app/src/main/java/com/nextcloud/talk/webrtc/WebSocketInstance.kt b/app/src/main/java/com/nextcloud/talk/webrtc/WebSocketInstance.kt index bbd5e428d..dec297dd7 100644 --- a/app/src/main/java/com/nextcloud/talk/webrtc/WebSocketInstance.kt +++ b/app/src/main/java/com/nextcloud/talk/webrtc/WebSocketInstance.kt @@ -56,6 +56,7 @@ import java.io.IOException import javax.inject.Inject @AutoInjector(NextcloudTalkApplication::class) +@Suppress("TooManyFunctions") class WebSocketInstance internal constructor( conversationUser: User, connectionUrl: String, @@ -388,6 +389,10 @@ class WebSocketInstance internal constructor( ) if (!isConnected || reconnecting) { messagesQueue.add(message) + + if (!reconnecting) { + restartWebSocket() + } } else { if (roomToken == "") { Log.d(TAG, "sending 'leave room' via websocket") @@ -399,7 +404,11 @@ class WebSocketInstance internal constructor( } else { Log.d(TAG, "Sending join room message via websocket") currentNormalBackendSession = normalBackendSession - internalWebSocket!!.send(message) + + if (!internalWebSocket!!.send(message)) { + messagesQueue.add(message) + restartWebSocket() + } } } } catch (e: IOException) { @@ -414,8 +423,15 @@ class WebSocketInstance internal constructor( ) if (!isConnected || reconnecting) { messagesQueue.add(message) + + if (!reconnecting) { + restartWebSocket() + } } else { - internalWebSocket!!.send(message) + if (!internalWebSocket!!.send(message)) { + messagesQueue.add(message) + restartWebSocket() + } } } catch (e: IOException) { Log.e(TAG, "Failed to serialize signaling message", e)