Browse Source

Attempts to prevent from failure in case addSource/removeSource notification is received before localDescription is created.

master
paweldomas 11 years ago
parent
commit
6d6ca2a9e9
2 changed files with 54 additions and 0 deletions
  1. 26
    0
      libs/colibri/colibri.focus.js
  2. 28
    0
      libs/strophe/strophe.jingle.sessionbase.js

+ 26
- 0
libs/colibri/colibri.focus.js View File

@@ -766,6 +766,19 @@ ColibriFocus.prototype.sendSSRCUpdate = function (sdpMediaSsrcs, fromJid, isadd)
766 766
 ColibriFocus.prototype.addSource = function (elem, fromJid) {
767 767
 
768 768
     var self = this;
769
+    // FIXME: dirty waiting
770
+    if (!this.peerconnection.localDescription)
771
+    {
772
+        console.warn("addSource - localDescription not ready yet")
773
+        setTimeout(function()
774
+            {
775
+                self.addSource(elem, fromJid);
776
+            },
777
+            200
778
+        );
779
+        return;
780
+    }
781
+
769 782
     this.peerconnection.addSource(elem);
770 783
 
771 784
     var peerSsrc = this.remotessrc[fromJid];
@@ -799,6 +812,19 @@ ColibriFocus.prototype.addSource = function (elem, fromJid) {
799 812
 ColibriFocus.prototype.removeSource = function (elem, fromJid) {
800 813
 
801 814
     var self = this;
815
+    // FIXME: dirty waiting
816
+    if (!self.peerconnection.localDescription)
817
+    {
818
+        console.warn("removeSource - localDescription not ready yet");
819
+        setTimeout(function()
820
+            {
821
+                self.removeSource(elem, fromJid);
822
+            },
823
+            200
824
+        );
825
+        return;
826
+    }
827
+
802 828
     this.peerconnection.removeSource(elem);
803 829
 
804 830
     var peerSsrc = this.remotessrc[fromJid];

+ 28
- 0
libs/strophe/strophe.jingle.sessionbase.js View File

@@ -23,6 +23,20 @@ SessionBase.prototype.modifySources = function (successCallback) {
23 23
 
24 24
 SessionBase.prototype.addSource = function (elem, fromJid) {
25 25
 
26
+    var self = this;
27
+    // FIXME: dirty waiting
28
+    if (!this.peerconnection.localDescription)
29
+    {
30
+        console.warn("addSource - localDescription not ready yet")
31
+        setTimeout(function()
32
+            {
33
+                self.addSource(elem, fromJid);
34
+            },
35
+            200
36
+        );
37
+        return;
38
+    }
39
+
26 40
     this.peerconnection.addSource(elem);
27 41
 
28 42
     this.modifySources();
@@ -30,6 +44,20 @@ SessionBase.prototype.addSource = function (elem, fromJid) {
30 44
 
31 45
 SessionBase.prototype.removeSource = function (elem, fromJid) {
32 46
 
47
+    var self = this;
48
+    // FIXME: dirty waiting
49
+    if (!this.peerconnection.localDescription)
50
+    {
51
+        console.warn("removeSource - localDescription not ready yet")
52
+        setTimeout(function()
53
+            {
54
+                self.removeSource(elem, fromJid);
55
+            },
56
+            200
57
+        );
58
+        return;
59
+    }
60
+
33 61
     this.peerconnection.removeSource(elem);
34 62
 
35 63
     this.modifySources();

Loading…
Cancel
Save