diff --git a/bigbluebutton-client/locale/en_US/bbbResources.properties b/bigbluebutton-client/locale/en_US/bbbResources.properties index f0592da75cbbc3f753be619049a2aee9cc03a638..bc98fe27718d8dca26e9da5e8695707ee5e74c06 100755 --- a/bigbluebutton-client/locale/en_US/bbbResources.properties +++ b/bigbluebutton-client/locale/en_US/bbbResources.properties @@ -75,6 +75,7 @@ bbb.webrtcWarning.failedError.1006 = Error 1006: Call timed out bbb.webrtcWarning.failedError.1007 = Error 1007: ICE negotiation failed bbb.webrtcWarning.failedError.1008 = Error 1008: Transfer failed bbb.webrtcWarning.failedError.1009 = Error 1009: Could not fetch STUN/TURN server information +bbb.webrtcWarning.failedError.1010 = Error 1010: ICE negotiation timeout bbb.webrtcWarning.failedError.unknown = Error {0}: Unknown error code bbb.webrtcWarning.failedError.mediamissing = Could not get your microphone for a WebRTC call bbb.webrtcWarning.failedError.endedunexpectedly = The WebRTC echo test ended unexpectedly diff --git a/bigbluebutton-client/resources/prod/lib/bbb_webrtc_bridge_sip.js b/bigbluebutton-client/resources/prod/lib/bbb_webrtc_bridge_sip.js index 782e3c5f9f01f0c10eed9820e137cc1cec823d8c..884026f2e444d2378a433df79f155566eec80ef8 100755 --- a/bigbluebutton-client/resources/prod/lib/bbb_webrtc_bridge_sip.js +++ b/bigbluebutton-client/resources/prod/lib/bbb_webrtc_bridge_sip.js @@ -1,5 +1,5 @@ -var userID, callerIdName, conferenceVoiceBridge, userAgent=null, userMicMedia, userWebcamMedia, currentSession=null, callTimeout, callActive, callICEConnected, callFailCounter, callPurposefullyEnded, uaConnected, transferTimeout; +var userID, callerIdName, conferenceVoiceBridge, userAgent=null, userMicMedia, userWebcamMedia, currentSession=null, callTimeout, callActive, callICEConnected, iceConnectedTimeout, callFailCounter, callPurposefullyEnded, uaConnected, transferTimeout; var inEchoTest = true; function webRTCCallback(message) { @@ -419,6 +419,17 @@ function make_call(username, voiceBridge, server, callback, recall, isListenOnly callback({'status':'started'}); } else { callback({'status':'waitingforice'}); + console.log('Waiting for ICE negotiation'); + iceConnectedTimeout = setTimeout(function() { + console.log('60 seconds without ICE finishing'); + callback({'status':'failed', 'errorcode': 1010}); // Failure on call + currentSession = null; + if (userAgent != null) { + var userAgentTemp = userAgent; + userAgent = null; + userAgentTemp.stop(); + } + }, 60000); } clearTimeout(callTimeout); }); @@ -426,6 +437,7 @@ function make_call(username, voiceBridge, server, callback, recall, isListenOnly console.log('received ice negotiation failed'); callback({'status':'failed', 'errorcode': 1007}); // Failure on call currentSession = null; + clearTimeout(iceConnectedTimeout); if (userAgent != null) { var userAgentTemp = userAgent; userAgent = null; @@ -441,6 +453,7 @@ function make_call(username, voiceBridge, server, callback, recall, isListenOnly console.log('Received ICE status changed to connected'); if (callICEConnected === false) { callICEConnected = true; + clearTimeout(iceConnectedTimeout); if (callActive === true) { callback({'status':'started'}); } @@ -452,6 +465,7 @@ function make_call(username, voiceBridge, server, callback, recall, isListenOnly console.log('Received ICE status changed to completed'); if (callICEConnected === false) { callICEConnected = true; + clearTimeout(iceConnectedTimeout); if (callActive === true) { callback({'status':'started'}); }