fix: sip rect issue on re-invite

This commit is contained in:
Quan HL
2023-04-05 06:28:32 +07:00
parent 4271a3fe3d
commit 3b72c8316c

View File

@@ -1,6 +1,7 @@
const InboundCallSession = require('./inbound-call-session'); const InboundCallSession = require('./inbound-call-session');
const {createSipRecPayload} = require('../utils/siprec-utils'); const {createSipRecPayload} = require('../utils/siprec-utils');
const {CallStatus} = require('../utils/constants'); const {CallStatus} = require('../utils/constants');
const {parseSiprecPayload} = require('../utils/siprec-utils');
/** /**
* @classdesc Subclass of InboundCallSession. This represents a CallSession that is * @classdesc Subclass of InboundCallSession. This represents a CallSession that is
* established for an inbound SIPREC call. * established for an inbound SIPREC call.
@@ -16,6 +17,31 @@ class SipRecCallSession extends InboundCallSession {
this.metadata = metadata; this.metadata = metadata;
} }
async _onReinvite(req, res) {
try {
const {sdp1: reSdp1, sdp2: reSdp2, metadata: reMetadata} = await parseSiprecPayload(req, this.logger);
this.sdp1 = reSdp1;
this.sdp2 = reSdp2;
this.metadata = reMetadata;
if (this.ep && this.ep2) {
let remoteSdp = this.sdp1.replace(/sendonly/, 'sendrecv');
const newSdp1 = await this.ep.modify(remoteSdp);
remoteSdp = this.sdp2.replace(/sendonly/, 'sendrecv');
const newSdp2 = await this.ep2.modify(remoteSdp);
const combinedSdp = await createSipRecPayload(newSdp1, newSdp2, this.logger);
res.send(200, {body: combinedSdp});
this.logger.info({offer: req.body, answer: combinedSdp}, 'handling reINVITE');
}
else {
this.logger.info('got reINVITE but no endpoint and media has not been released');
res.send(488);
}
} catch (err) {
this.logger.error(err, 'Error handling reinvite');
}
}
async answerSipRecCall() { async answerSipRecCall() {
try { try {
this.ms = this.getMS(); this.ms = this.getMS();