From 6d6ca2a9e9afbbbe8717bdeade57f868d3a0b1b3 Mon Sep 17 00:00:00 2001 From: paweldomas Date: Wed, 18 Jun 2014 18:58:00 +0200 Subject: [PATCH] Attempts to prevent from failure in case addSource/removeSource notification is received before localDescription is created. --- libs/colibri/colibri.focus.js | 26 ++++++++++++++++++++ libs/strophe/strophe.jingle.sessionbase.js | 28 ++++++++++++++++++++++ 2 files changed, 54 insertions(+) diff --git a/libs/colibri/colibri.focus.js b/libs/colibri/colibri.focus.js index 3b2dc3944..8978b96d6 100644 --- a/libs/colibri/colibri.focus.js +++ b/libs/colibri/colibri.focus.js @@ -766,6 +766,19 @@ ColibriFocus.prototype.sendSSRCUpdate = function (sdpMediaSsrcs, fromJid, isadd) ColibriFocus.prototype.addSource = function (elem, fromJid) { var self = this; + // FIXME: dirty waiting + if (!this.peerconnection.localDescription) + { + console.warn("addSource - localDescription not ready yet") + setTimeout(function() + { + self.addSource(elem, fromJid); + }, + 200 + ); + return; + } + this.peerconnection.addSource(elem); var peerSsrc = this.remotessrc[fromJid]; @@ -799,6 +812,19 @@ ColibriFocus.prototype.addSource = function (elem, fromJid) { ColibriFocus.prototype.removeSource = function (elem, fromJid) { var self = this; + // FIXME: dirty waiting + if (!self.peerconnection.localDescription) + { + console.warn("removeSource - localDescription not ready yet"); + setTimeout(function() + { + self.removeSource(elem, fromJid); + }, + 200 + ); + return; + } + this.peerconnection.removeSource(elem); var peerSsrc = this.remotessrc[fromJid]; diff --git a/libs/strophe/strophe.jingle.sessionbase.js b/libs/strophe/strophe.jingle.sessionbase.js index c0519a0d6..d38d7304f 100644 --- a/libs/strophe/strophe.jingle.sessionbase.js +++ b/libs/strophe/strophe.jingle.sessionbase.js @@ -23,6 +23,20 @@ SessionBase.prototype.modifySources = function (successCallback) { SessionBase.prototype.addSource = function (elem, fromJid) { + var self = this; + // FIXME: dirty waiting + if (!this.peerconnection.localDescription) + { + console.warn("addSource - localDescription not ready yet") + setTimeout(function() + { + self.addSource(elem, fromJid); + }, + 200 + ); + return; + } + this.peerconnection.addSource(elem); this.modifySources(); @@ -30,6 +44,20 @@ SessionBase.prototype.addSource = function (elem, fromJid) { SessionBase.prototype.removeSource = function (elem, fromJid) { + var self = this; + // FIXME: dirty waiting + if (!this.peerconnection.localDescription) + { + console.warn("removeSource - localDescription not ready yet") + setTimeout(function() + { + self.removeSource(elem, fromJid); + }, + 200 + ); + return; + } + this.peerconnection.removeSource(elem); this.modifySources();