diff --git a/lib/call-session.js b/lib/call-session.js index e5a746f..0dde792 100644 --- a/lib/call-session.js +++ b/lib/call-session.js @@ -352,7 +352,8 @@ class CallSession extends Emitter { * like a rare use case -- encryption is usually an all or nothing requirement. */ this.logger.info({u}, `using SRTP for outbound call, pad crypto: ${o.pad_crypto ? 'yes' : 'no'}`); - this.rtpEngineOpts = makeRtpEngineOpts(this.req, false, true, o.pad_crypto, true); + // eslint-disable-next-line max-len + this.rtpEngineOpts = makeRtpEngineOpts(this.req, false, true, o.pad_crypto, true, o.remove_ice, o.dtls_off); encryptedMedia = true; } }); diff --git a/lib/utils.js b/lib/utils.js index 33c5133..8f7947c 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -5,7 +5,8 @@ const CIDRMatcher = require('cidr-matcher'); const dns = require('dns'); const sdpTransform = require('sdp-transform'); -function makeRtpEngineOpts(req, srcIsUsingSrtp, dstIsUsingSrtp, padCrypto, teams) { +// eslint-disable-next-line max-len +function makeRtpEngineOpts(req, srcIsUsingSrtp, dstIsUsingSrtp, padCrypto, teams, remove_ice = false, dtls_off = false) { const from = req.getParsedHeader('from'); const rtpCopy = JSON.parse(JSON.stringify(rtpCharacteristics)); const srtpCopy = JSON.parse(JSON.stringify(srtpCharacteristics)); @@ -16,6 +17,14 @@ function makeRtpEngineOpts(req, srcIsUsingSrtp, dstIsUsingSrtp, padCrypto, teams } const srtpOpts = teams ? srtpCopy['teams'] : srtpCopy['default']; + + if (remove_ice) { + srtpOpts.ICE = 'remove'; + } + if (dtls_off) { + srtpOpts.DTLS = 'off'; + } + const dstOpts = JSON.parse(JSON.stringify(dstIsUsingSrtp ? srtpOpts : rtpCopy)); const srcOpts = JSON.parse(JSON.stringify(srcIsUsingSrtp ? srtpOpts : rtpCopy));