|
@@ -19,6 +19,8 @@ import RTC from './modules/RTC/RTC';
|
19
|
19
|
import TalkMutedDetection from './modules/TalkMutedDetection';
|
20
|
20
|
import browser from './modules/browser';
|
21
|
21
|
import ConnectionQuality from './modules/connectivity/ConnectionQuality';
|
|
22
|
+import IceFailedNotification
|
|
23
|
+ from './modules/connectivity/IceFailedNotification';
|
22
|
24
|
import ParticipantConnectionStatusHandler
|
23
|
25
|
from './modules/connectivity/ParticipantConnectionStatus';
|
24
|
26
|
import E2ePing from './modules/e2eping/e2eping';
|
|
@@ -434,6 +436,8 @@ JitsiConference.prototype.leave = function() {
|
434
|
436
|
this.statistics.dispose();
|
435
|
437
|
}
|
436
|
438
|
|
|
439
|
+ this._delayedIceFailed && this._delayedIceFailed.cancel();
|
|
440
|
+
|
437
|
441
|
// Close both JVb and P2P JingleSessions
|
438
|
442
|
if (this.jvbJingleSession) {
|
439
|
443
|
this.jvbJingleSession.close();
|
|
@@ -2365,8 +2369,14 @@ JitsiConference.prototype._onIceConnectionFailed = function(session) {
|
2365
|
2369
|
}
|
2366
|
2370
|
this._stopP2PSession('connectivity-error', 'ICE FAILED');
|
2367
|
2371
|
} else if (session && this.jvbJingleSession === session) {
|
2368
|
|
- // Let Jicofo know that the JVB's ICE connection has failed
|
2369
|
|
- session.sendIceFailedNotification();
|
|
2372
|
+ if (this.xmpp.isPingSupported()) {
|
|
2373
|
+ this._delayedIceFailed = new IceFailedNotification(this);
|
|
2374
|
+ this._delayedIceFailed.start(session);
|
|
2375
|
+ } else {
|
|
2376
|
+ // Let Jicofo know that the JVB's ICE connection has failed
|
|
2377
|
+ logger.info('PING not supported - sending ICE failed immediately');
|
|
2378
|
+ session.sendIceFailedNotification();
|
|
2379
|
+ }
|
2370
|
2380
|
}
|
2371
|
2381
|
};
|
2372
|
2382
|
|
|
@@ -2380,6 +2390,7 @@ JitsiConference.prototype._onIceConnectionRestored = function(session) {
|
2380
|
2390
|
this.isP2PConnectionInterrupted = false;
|
2381
|
2391
|
} else {
|
2382
|
2392
|
this.isJvbConnectionInterrupted = false;
|
|
2393
|
+ this._delayedIceFailed && this._delayedIceFailed.cancel();
|
2383
|
2394
|
}
|
2384
|
2395
|
|
2385
|
2396
|
if (session.isP2P === this.isP2PActive()) {
|