瀏覽代碼

Merge pull request #217 from jitsi/fix-state-mute-inprogress

Surrounds code in successcallback with try/catch and call errorcallba…
dev1
hristoterezov 9 年之前
父節點
當前提交
32465eafb3
共有 1 個檔案被更改,包括 36 行新增23 行删除
  1. 36
    23
      modules/xmpp/TraceablePeerConnection.js

+ 36
- 23
modules/xmpp/TraceablePeerConnection.js 查看文件

@@ -584,32 +584,45 @@ TraceablePeerConnection.prototype.createAnswer
584 584
     this.trace('createAnswer', JSON.stringify(constraints, null, ' '));
585 585
     this.peerconnection.createAnswer(
586 586
         function (answer) {
587
-            self.trace('createAnswerOnSuccess::preTransform', dumpSDP(answer));
588
-            // if we're running on FF, transform to Plan A first.
589
-            if (RTCBrowserType.usesUnifiedPlan()) {
590
-                answer = self.interop.toPlanB(answer);
591
-                self.trace('createAnswerOnSuccess::postTransform (Plan B)',
592
-                    dumpSDP(answer));
593
-            }
594
-
595
-            if (!self.session.room.options.disableSimulcast
596
-                && self.simulcast.isSupported()) {
597
-                answer = self.simulcast.mungeLocalDescription(answer);
598
-                self.trace('createAnswerOnSuccess::postTransform (simulcast)',
599
-                    dumpSDP(answer));
600
-            }
587
+            try {
588
+                self.trace(
589
+                    'createAnswerOnSuccess::preTransform', dumpSDP(answer));
590
+                // if we're running on FF, transform to Plan A first.
591
+                if (RTCBrowserType.usesUnifiedPlan()) {
592
+                    answer = self.interop.toPlanB(answer);
593
+                    self.trace('createAnswerOnSuccess::postTransform (Plan B)',
594
+                        dumpSDP(answer));
595
+                }
601 596
 
602
-            if (!RTCBrowserType.isFirefox())
603
-            {
604
-                answer = self.ssrcReplacement(answer);
605
-                self.trace('createAnswerOnSuccess::mungeLocalVideoSSRC',
606
-                    dumpSDP(answer));
607
-            }
597
+                if (!self.session.room.options.disableSimulcast
598
+                    && self.simulcast.isSupported()) {
599
+                    answer = self.simulcast.mungeLocalDescription(answer);
600
+                    self.trace(
601
+                        'createAnswerOnSuccess::postTransform (simulcast)',
602
+                        dumpSDP(answer));
603
+                }
608 604
 
609
-            self.eventEmitter.emit(XMPPEvents.SENDRECV_STREAMS_CHANGED,
610
-                extractSSRCMap(answer));
605
+                if (!RTCBrowserType.isFirefox())
606
+                {
607
+                    answer = self.ssrcReplacement(answer);
608
+                    self.trace('createAnswerOnSuccess::mungeLocalVideoSSRC',
609
+                        dumpSDP(answer));
610
+                }
611 611
 
612
-            successCallback(answer);
612
+                self.eventEmitter.emit(XMPPEvents.SENDRECV_STREAMS_CHANGED,
613
+                    extractSSRCMap(answer));
614
+
615
+                successCallback(answer);
616
+            } catch (e) {
617
+                // there can be error modifying the answer, for example
618
+                // for ssrcReplacement there was a track with ssrc that is null
619
+                // and if we do not catch the error no callback is called
620
+                // at all
621
+                self.trace('createAnswerOnError', e);
622
+                self.trace('createAnswerOnError', dumpSDP(answer));
623
+                logger.error('createAnswerOnError', e, dumpSDP(answer));
624
+                failureCallback(e);
625
+            }
613 626
         },
614 627
         function(err) {
615 628
             self.trace('createAnswerOnFailure', err);

Loading…
取消
儲存