From 10680ace1731a64af1c27cda345362ebf96ff304 Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 17 Nov 2017 14:51:37 +0000 Subject: [PATCH] Fix the force TURN option Option needed to be passed in when creating a webrtc call, but for incoming calls the js-sdk creates the call itself, so the app never gets a chance to set the option. --- src/client.js | 15 ++++++++++++++- src/webrtc/call.js | 4 ++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/client.js b/src/client.js index 1da561e75..41aaba208 100644 --- a/src/client.js +++ b/src/client.js @@ -175,6 +175,8 @@ function MatrixClient(opts) { this._cryptoStore = opts.cryptoStore; this._sessionStore = opts.sessionStore; + this._forceTURN = opts.forceTURN || false; + if (CRYPTO_ENABLED) { this.olmVersion = Crypto.getOlmVersion(); } @@ -252,6 +254,15 @@ MatrixClient.prototype.supportsVoip = function() { return this._supportsVoip; }; +/** + * Set whether VoIP calls are forced to use only TURN + * candidates. This is the same as the forceTURN option + * when creating the client. + */ +MatrixClient.prototype.setForceTURN = function(forceTURN) { + return this._forceTURN = forceTURN; +}; + /** * Get the current sync state. * @return {?string} the sync state, which may be null. @@ -3153,7 +3164,9 @@ function setupCallEventHandler(client) { ); } - call = webRtcCall.createNewMatrixCall(client, event.getRoomId()); + call = webRtcCall.createNewMatrixCall(client, event.getRoomId(), { + forceTURN: client._forceTURN, + }); if (!call) { console.log( "Incoming call ID " + content.call_id + " but this client " + diff --git a/src/webrtc/call.js b/src/webrtc/call.js index a44e18ad6..2de5fdcf7 100644 --- a/src/webrtc/call.js +++ b/src/webrtc/call.js @@ -1300,7 +1300,7 @@ module.exports.setVideoInput = function(deviceId) { videoInput = deviceId; }; * @param {boolean} options.forceTURN whether relay through TURN should be forced. * @return {MatrixCall} the call or null if the browser doesn't support calling. */ -module.exports.createNewMatrixCall = function(client, roomId, options) { +module.exports.createNewMatrixCall = function(client, roomId) { const w = global.window; const doc = global.document; if (!w || !doc) { @@ -1357,7 +1357,7 @@ module.exports.createNewMatrixCall = function(client, roomId, options) { roomId: roomId, turnServers: client.getTurnServers(), // call level options - forceTURN: options ? options.forceTURN : false, + forceTURN: client._forceTURN, }; return new MatrixCall(opts); };