This is an automated email from the git hooks/post-receive script.
cohosh pushed a commit to branch main in repository pluggable-transports/snowflake-webext.
commit 132213e24855fc65b1255828e39fde5fb5f44b54 Author: WofWca wofwca@protonmail.com AuthorDate: Fri Nov 4 14:47:25 2022 +0400
refactor: remove global var usage --- proxypair.js | 5 +++-- snowflake.js | 7 ++++++- spec/proxypair.spec.js | 11 +++++++---- 3 files changed, 16 insertions(+), 7 deletions(-)
diff --git a/proxypair.js b/proxypair.js index 4b7c115..493d9e3 100644 --- a/proxypair.js +++ b/proxypair.js @@ -50,9 +50,10 @@ class ProxyPair {
/** * @param {RTCSessionDescription} offer + * @param {(answer: RTCSessionDescription) => void} sendAnswer * @returns {boolean} `true` on success, `false` on fail. */ - receiveWebRTCOffer(offer) { + receiveWebRTCOffer(offer, sendAnswer) { if ('offer' !== offer.type) { log('Invalid SDP received -- was not an offer.'); return false; @@ -67,7 +68,7 @@ class ProxyPair {
// Send the answer when ready. const onceSendAnswer = () => { - snowflake.broker.sendAnswer(this.id, this.pc.localDescription); + sendAnswer(this.pc.localDescription);
this.pc.onicegatheringstatechange = null; clearTimeout(this.answerTimeoutId); diff --git a/snowflake.js b/snowflake.js index abb4c11..7342856 100644 --- a/snowflake.js +++ b/snowflake.js @@ -154,7 +154,12 @@ class Snowflake { const offer = JSON.parse(desc); dbg('Received:\n\n' + offer.sdp + '\n'); const sdp = new RTCSessionDescription(offer); - if (pair.receiveWebRTCOffer(sdp)) { + if ( + pair.receiveWebRTCOffer( + sdp, + answer => this.broker.sendAnswer(pair.id, answer) + ) + ) { this.sendAnswer(pair); return true; } else { diff --git a/spec/proxypair.spec.js b/spec/proxypair.spec.js index 6cf71f2..3b8bc0a 100644 --- a/spec/proxypair.spec.js +++ b/spec/proxypair.spec.js @@ -80,10 +80,13 @@ describe('ProxyPair', function() {
it('responds with a WebRTC answer correctly', function() { spyOn(snowflake.broker, 'sendAnswer'); - pp.receiveWebRTCOffer({ - type: 'offer', - sdp: 'foo' - }); + pp.receiveWebRTCOffer( + { + type: 'offer', + sdp: 'foo' + }, + answer => snowflake.broker.sendAnswer(pp.id, answer), + ); pp.pc.iceGatheringState = 'complete'; pp.pc.onicegatheringstatechange(); expect(snowflake.broker.sendAnswer).toHaveBeenCalled();