mirror of
https://github.com/jambonz/jambonz-feature-server.git
synced 2025-12-22 09:37:56 +00:00
fix: sip rect issue on re-invite
This commit is contained in:
@@ -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();
|
||||||
|
|||||||
Reference in New Issue
Block a user