bump strophe.jingle version; refactored drip ice
This commit is contained in:
parent
85351d9cb2
commit
1be8332512
|
@ -1644,99 +1644,19 @@ JingleSession.prototype.sendIceCandidate = function (candidate) {
|
||||||
if (this.usetrickle) {
|
if (this.usetrickle) {
|
||||||
if (this.usedrip) {
|
if (this.usedrip) {
|
||||||
if (this.drip_container.length === 0) {
|
if (this.drip_container.length === 0) {
|
||||||
// start 10ms callout
|
// start 20ms callout
|
||||||
window.setTimeout(function () {
|
window.setTimeout(function () {
|
||||||
if (self.drip_container.length === 0) return;
|
if (self.drip_container.length === 0) return;
|
||||||
var allcands = self.drip_container;
|
self.sendIceCandidates(self.drip_container);
|
||||||
self.drip_container = [];
|
self.drip_container = [];
|
||||||
var cand = $iq({to: self.peerjid, type: 'set'})
|
}, 20);
|
||||||
.c('jingle', {xmlns: 'urn:xmpp:jingle:1',
|
|
||||||
action: 'transport-info',
|
|
||||||
initiator: self.initiator,
|
|
||||||
sid: self.sid});
|
|
||||||
for (var mid = 0; mid < self.localSDP.media.length; mid++) {
|
|
||||||
var cands = allcands.filter(function (el) { return el.sdpMLineIndex == mid; });
|
|
||||||
if (cands.length > 0) {
|
|
||||||
var ice = SDPUtil.iceparams(self.localSDP.media[mid], self.localSDP.session);
|
|
||||||
ice.xmlns = 'urn:xmpp:jingle:transports:ice-udp:1';
|
|
||||||
cand.c('content', {creator: self.initiator == self.me ? 'initiator' : 'responder',
|
|
||||||
name: cands[0].sdpMid
|
|
||||||
}).c('transport', ice);
|
|
||||||
for (var i = 0; i < cands.length; i++) {
|
|
||||||
cand.c('candidate', SDPUtil.candidateToJingle(cands[i].candidate)).up();
|
|
||||||
}
|
|
||||||
// add fingerprint
|
|
||||||
if (SDPUtil.find_line(self.localSDP.media[mid], 'a=fingerprint:', self.localSDP.session)) {
|
|
||||||
var tmp = SDPUtil.parse_fingerprint(SDPUtil.find_line(self.localSDP.media[mid], 'a=fingerprint:', self.localSDP.session));
|
|
||||||
tmp.required = true;
|
|
||||||
cand.c('fingerprint').t(tmp.fingerprint);
|
|
||||||
delete tmp.fingerprint;
|
|
||||||
cand.attrs(tmp);
|
|
||||||
cand.up();
|
|
||||||
}
|
|
||||||
cand.up(); // transport
|
|
||||||
cand.up(); // content
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// might merge last-candidate notification into this, but it is called alot later. See webrtc issue #2340
|
|
||||||
//console.log('was this the last candidate', self.lasticecandidate);
|
|
||||||
self.connection.sendIQ(cand,
|
|
||||||
function () {
|
|
||||||
var ack = {};
|
|
||||||
ack.source = 'transportinfo';
|
|
||||||
$(document).trigger('ack.jingle', [self.sid, ack]);
|
|
||||||
},
|
|
||||||
function (stanza) {
|
|
||||||
var error = ($(stanza).find('error').length) ? {
|
|
||||||
code: $(stanza).find('error').attr('code'),
|
|
||||||
reason: $(stanza).find('error :first')[0].tagName,
|
|
||||||
}:{};
|
|
||||||
error.source = 'transportinfo';
|
|
||||||
$(document).trigger('error.jingle', [self.sid, error]);
|
|
||||||
},
|
|
||||||
10000);
|
|
||||||
}, 10);
|
|
||||||
}
|
}
|
||||||
this.drip_container.push(event.candidate);
|
this.drip_container.push(event.candidate);
|
||||||
return;
|
return;
|
||||||
|
} else {
|
||||||
|
self.sendIceCandidate([event.candidate]);
|
||||||
}
|
}
|
||||||
// map to transport-info
|
|
||||||
var cand = $iq({to: this.peerjid, type: 'set'})
|
|
||||||
.c('jingle', {xmlns: 'urn:xmpp:jingle:1',
|
|
||||||
action: 'transport-info',
|
|
||||||
initiator: this.initiator,
|
|
||||||
sid: this.sid})
|
|
||||||
.c('content', {creator: this.initiator == this.me ? 'initiator' : 'responder',
|
|
||||||
name: candidate.sdpMid
|
|
||||||
})
|
|
||||||
.c('transport', ice)
|
|
||||||
.c('candidate', jcand);
|
|
||||||
cand.up();
|
|
||||||
// add fingerprint
|
|
||||||
if (SDPUtil.find_line(this.localSDP.media[candidate.sdpMLineIndex], 'a=fingerprint:', this.localSDP.session)) {
|
|
||||||
var tmp = SDPUtil.parse_fingerprint(SDPUtil.find_line(this.localSDP.media[candidate.sdpMLineIndex], 'a=fingerprint:', this.localSDP.session));
|
|
||||||
tmp.required = true;
|
|
||||||
cand.c('fingerprint').t(tmp.fingerprint);
|
|
||||||
delete tmp.fingerprint;
|
|
||||||
cand.attrs(tmp);
|
|
||||||
cand.up();
|
|
||||||
}
|
|
||||||
this.connection.sendIQ(cand,
|
|
||||||
function () {
|
|
||||||
var ack = {};
|
|
||||||
ack.source = 'transportinfo';
|
|
||||||
$(document).trigger('ack.jingle', [self.sid, ack]);
|
|
||||||
},
|
|
||||||
function (stanza) {
|
|
||||||
console.error('transport info error');
|
|
||||||
var error = ($(stanza).find('error').length) ? {
|
|
||||||
code: $(stanza).find('error').attr('code'),
|
|
||||||
reason: $(stanza).find('error :first')[0].tagName,
|
|
||||||
}:{};
|
|
||||||
error.source = 'transportinfo';
|
|
||||||
$(document).trigger('error.jingle', [self.sid, error]);
|
|
||||||
},
|
|
||||||
10000);
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
//console.log('sendIceCandidate: last candidate.');
|
//console.log('sendIceCandidate: last candidate.');
|
||||||
|
@ -1779,6 +1699,57 @@ JingleSession.prototype.sendIceCandidate = function (candidate) {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
JingleSession.prototype.sendIceCandidates = function (candidates) {
|
||||||
|
console.log('sendIceCandidates', candidates);
|
||||||
|
var cand = $iq({to: this.peerjid, type: 'set'})
|
||||||
|
.c('jingle', {xmlns: 'urn:xmpp:jingle:1',
|
||||||
|
action: 'transport-info',
|
||||||
|
initiator: this.initiator,
|
||||||
|
sid: this.sid});
|
||||||
|
for (var mid = 0; mid < this.localSDP.media.length; mid++) {
|
||||||
|
var cands = candidates.filter(function (el) { return el.sdpMLineIndex == mid; });
|
||||||
|
if (cands.length > 0) {
|
||||||
|
var ice = SDPUtil.iceparams(this.localSDP.media[mid], this.localSDP.session);
|
||||||
|
ice.xmlns = 'urn:xmpp:jingle:transports:ice-udp:1';
|
||||||
|
cand.c('content', {creator: this.initiator == this.me ? 'initiator' : 'responder',
|
||||||
|
name: cands[0].sdpMid
|
||||||
|
}).c('transport', ice);
|
||||||
|
for (var i = 0; i < cands.length; i++) {
|
||||||
|
cand.c('candidate', SDPUtil.candidateToJingle(cands[i].candidate)).up();
|
||||||
|
}
|
||||||
|
// add fingerprint
|
||||||
|
if (SDPUtil.find_line(this.localSDP.media[mid], 'a=fingerprint:', this.localSDP.session)) {
|
||||||
|
var tmp = SDPUtil.parse_fingerprint(SDPUtil.find_line(this.localSDP.media[mid], 'a=fingerprint:', this.localSDP.session));
|
||||||
|
tmp.required = true;
|
||||||
|
cand.c('fingerprint').t(tmp.fingerprint);
|
||||||
|
delete tmp.fingerprint;
|
||||||
|
cand.attrs(tmp);
|
||||||
|
cand.up();
|
||||||
|
}
|
||||||
|
cand.up(); // transport
|
||||||
|
cand.up(); // content
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// might merge last-candidate notification into this, but it is called alot later. See webrtc issue #2340
|
||||||
|
//console.log('was this the last candidate', this.lasticecandidate);
|
||||||
|
this.connection.sendIQ(cand,
|
||||||
|
function () {
|
||||||
|
var ack = {};
|
||||||
|
ack.source = 'transportinfo';
|
||||||
|
$(document).trigger('ack.jingle', [this.sid, ack]);
|
||||||
|
},
|
||||||
|
function (stanza) {
|
||||||
|
var error = ($(stanza).find('error').length) ? {
|
||||||
|
code: $(stanza).find('error').attr('code'),
|
||||||
|
reason: $(stanza).find('error :first')[0].tagName,
|
||||||
|
}:{};
|
||||||
|
error.source = 'transportinfo';
|
||||||
|
$(document).trigger('error.jingle', [this.sid, error]);
|
||||||
|
},
|
||||||
|
10000);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
JingleSession.prototype.sendOffer = function () {
|
JingleSession.prototype.sendOffer = function () {
|
||||||
//console.log('sendOffer...');
|
//console.log('sendOffer...');
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
Loading…
Reference in New Issue