Skip to content

Commit

Permalink
wip
Browse files Browse the repository at this point in the history
  • Loading branch information
davehorton committed Dec 12, 2024
1 parent a7d6cf5 commit c21851c
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 12 deletions.
4 changes: 0 additions & 4 deletions app.js
Original file line number Diff line number Diff line change
Expand Up @@ -244,10 +244,6 @@ srf.invite((req, res) => {
}
return session.replaces(req, res);
}
if (req.locals.sdp === '') {
logger.info('no sdp in invite');
return res.send(488, {headers: {'X-Reason': '3pcc INVITEs without SDP are not currently supported'}});
}
const session = new CallSession(logger, req, res);
session.connect();
});
Expand Down
28 changes: 20 additions & 8 deletions lib/call-session.js
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,8 @@ class CallSession extends Emitter {

async connect() {
const {sdp} = this.req.locals;
this.logger.info('inbound call accepted for routing');
const is3pcc = this.req.body?.length === 0;
this.logger.info(`inbound ${is3pcc ? '3pcc ' : ''}call accepted for routing`);
const engine = this.getRtpEngine();
if (!engine) {
this.logger.info('No available rtpengines, rejecting call!');
Expand Down Expand Up @@ -183,13 +184,13 @@ class CallSession extends Emitter {
else uri = `${scheme}:${host}`;
this.logger.info(`uri will be: ${uri}, proxy ${proxy}`);

try {
const sendOfferToRtpEngine = async(remoteSdp) => {
const opts = {
...this.rtpEngineOpts.common,
...this.rtpEngineOpts.uac.mediaOpts,
'from-tag': this.rtpEngineOpts.uas.tag,
direction: [isPrivateVoipNetwork(this.req.source_address) ? 'private' : 'public', 'private'],
sdp
sdp: remoteSdp
};
const startAt = process.hrtime();
const response = await this.offer(opts);
Expand All @@ -202,7 +203,11 @@ class CallSession extends Emitter {
this.logger.error({}, `rtpengine offer failed with ${JSON.stringify(response)}`);
throw new Error('rtpengine failed: answer');
}
return response;
};

try {
const response = await sendOfferToRtpEngine(sdp);
let headers = {
'From': createBLegFromHeader(this.req),
'To': this.req.get('To'),
Expand All @@ -212,9 +217,13 @@ class CallSession extends Emitter {
};
if (this.privateSipAddress) headers = {...headers, Contact: `<sip:${this.privateSipAddress}>`};

const spdOfferB = this.siprec && this.xml ?
createSiprecBody(headers, response.sdp, this.xml.type, this.xml.content) :
response.sdp;
let spdOfferB;
if (this.siprec && this.xml) {
spdOfferB = createSiprecBody(headers, response.sdp, this.xml.type, this.xml.content);
}
else if (!is3pcc) {
spdOfferB = response.sdp;
}

if (this.req.locals.carrier) {
Object.assign(headers, {
Expand Down Expand Up @@ -281,7 +290,10 @@ class CallSession extends Emitter {
'-X-Authenticated-User'
],
proxyResponseHeaders: ['all', '-X-Trace-ID'],
localSdpB: spdOfferB,
localSdpB: spdOfferB ? spdOfferB : async(ackBody) => {
const response = await sendOfferToRtpEngine(ackBody);
return response.sdp;
},
localSdpA: async(sdp, res) => {
this.rtpEngineOpts.uac.tag = res.getParsedHeader('To').params.tag;
const opts = {
Expand Down Expand Up @@ -313,7 +325,7 @@ class CallSession extends Emitter {
}

return response.sdp;
}
},
});

// successfully connected
Expand Down

0 comments on commit c21851c

Please sign in to comment.