From 6af2a87dc6ba17b89cb193a7dd705695d44650d6 Mon Sep 17 00:00:00 2001
From: Rodrigo Nascimento <rodrigoknascimento@gmail.com>
Date: Fri, 2 Oct 2015 18:32:15 -0300
Subject: [PATCH] Expire connections after 5s trying to connect

---
 packages/rocketchat-webrtc/WebRTCClass.coffee | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/packages/rocketchat-webrtc/WebRTCClass.coffee b/packages/rocketchat-webrtc/WebRTCClass.coffee
index 2c5f0973d54..2d4dbc25970 100644
--- a/packages/rocketchat-webrtc/WebRTCClass.coffee
+++ b/packages/rocketchat-webrtc/WebRTCClass.coffee
@@ -149,6 +149,8 @@ class WebRTCClass
 		@transport.onRemoteDescription @onRemoteDescription.bind @
 		@transport.onRemoteStatus @onRemoteStatus.bind @
 
+		Meteor.setInterval @checkPeerConnections.bind(@), 1000
+
 		Meteor.setInterval @broadcastStatus.bind(@), 1000
 
 	log: ->
@@ -158,6 +160,11 @@ class WebRTCClass
 	onError: ->
 		console.error.apply(console, arguments)
 
+	checkPeerConnections: ->
+		for id, peerConnection of @peerConnections
+			if peerConnection.iceConnectionState not in ['connected', 'completed'] and peerConnection.createdAt + 5000 < Date.now()
+				@stopPeerConnection id
+
 	updateRemoteItems: ->
 		items = []
 		itemsById = {}
@@ -243,6 +250,7 @@ class WebRTCClass
 
 		peerConnection = new RTCPeerConnection @config
 
+		peerConnection.createdAt = Date.now()
 		peerConnection.remoteMedia = {}
 
 		@peerConnections[id] = peerConnection
-- 
GitLab