Ver código fonte

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

Surrounds code in successcallback with try/catch and call errorcallba…
dev1
hristoterezov 9 anos atrás
pai
commit
32465eafb3
1 arquivos alterados com 36 adições e 23 exclusões
  1. 36
    23
      modules/xmpp/TraceablePeerConnection.js

+ 36
- 23
modules/xmpp/TraceablePeerConnection.js Ver arquivo

584
     this.trace('createAnswer', JSON.stringify(constraints, null, ' '));
584
     this.trace('createAnswer', JSON.stringify(constraints, null, ' '));
585
     this.peerconnection.createAnswer(
585
     this.peerconnection.createAnswer(
586
         function (answer) {
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
         function(err) {
627
         function(err) {
615
             self.trace('createAnswerOnFailure', err);
628
             self.trace('createAnswerOnFailure', err);

Carregando…
Cancelar
Salvar