diff --git a/lib/call-session.js b/lib/call-session.js index 492b392..8cfeab9 100644 --- a/lib/call-session.js +++ b/lib/call-session.js @@ -12,7 +12,7 @@ class CallSession extends Emitter { this.srf = req.srf; this.performLcr = this.srf.locals.dbHelpers.performLcr; this.logger = logger.child({callId: req.get('Call-ID')}); - this.useWss = req.locals.registration && req.locals.registration.protocol === 'wss'; + this.useWss = req.locals.registration && req.locals.registration.protocol === 'wss'; this.stats = this.srf.locals.stats; this.activeCallIds = this.srf.locals.activeCallIds; } @@ -88,8 +88,10 @@ class CallSession extends Emitter { proxyResponseHeaders: ['all'], localSdpB: response.sdp, localSdpA: async(sdp, res) => { - const opts = Object.assign({sdp, 'to-tag': res.getParsedHeader('To').params.tag}, + this.toTag = res.getParsedHeader('To').params.tag; + const opts = Object.assign({sdp, 'to-tag': this.toTag}, this.rtpEngineOpts.answer); + this.logger.debug({opts}, 'calling rtpengine answer with these opts'); const response = await this.answer(opts); if ('ok' !== response.result) { this.logger.error(`rtpengine answer failed with ${JSON.stringify(response)}`); @@ -165,19 +167,24 @@ class CallSession extends Emitter { async _onReinvite(dlg, req, res) { try { - let response = await this.offer(Object.assign({sdp: req.body}, this.rtpEngineOpts.offer)); + const optOffer = Object.assign(this.rtpEngineOpts.offer, {sdp: req.body, 'to-tag': this.toTag}); + this.logger.debug({opts: optOffer}, 'got reinvite, calling rtpengine offer with these opts'); + let response = await this.offer(optOffer); if ('ok' !== response.result) { res.send(488); throw new Error(`_onReinvite: rtpengine failed: offer: ${JSON.stringify(response)}`); } + this.logger.debug({sdp: response.sdp}, 'rtpengine offer returned'); const sdp = await dlg.other.modify(response.sdp); - const opts = Object.assign({sdp, 'to-tag': res.getParsedHeader('To').params.tag}, - this.rtpEngineOpts.answer); + this.logger.debug({sdp}, 'reinvite to feature server returned'); + const opts = Object.assign(this.rtpEngineOpts.answer, {sdp, 'to-tag': this.toTag}); + this.logger.debug({opts}, 'in reinvite, calling rtpengine answer with these opts'); response = await this.answer(opts); if ('ok' !== response.result) { res.send(488); throw new Error(`_onReinvite: rtpengine failed: ${JSON.stringify(response)}`); } + this.logger.debug({sdp: response.sdp}, 'rtpengine answer returned'); res.send(200, {body: response.sdp}); } catch (err) { this.logger.error(err, 'Error handling reinvite');