add support for X-Override-To

This commit is contained in:
Dave Horton
2021-04-06 07:42:25 -04:00
parent e8840c20a0
commit 5b801bea84
3 changed files with 4139 additions and 17 deletions
+11 -3
View File
@@ -2,7 +2,7 @@ const Emitter = require('events');
const {makeRtpEngineOpts} = require('./utils');
const {forwardInDialogRequests} = require('drachtio-fn-b2b-sugar');
const {SipError} = require('drachtio-srf');
const {parseUri} = require('drachtio-srf');
const {parseUri, stringifyUri} = require('drachtio-srf');
const debug = require('debug')('jambonz:sbc-outbound');
const makeInviteInProgressKey = (callid) => `sbc-out-iip${callid}`;
@@ -69,14 +69,22 @@ class CallSession extends Emitter {
};
if (this.req.locals.registration) {
debug(`sending call to user ${JSON.stringify(this.req.locals.registration)}`);
debug(`sending call to registered user ${JSON.stringify(this.req.locals.registration)}`);
let destUri = this.req.uri;
if (this.req.has('X-Override-To')) {
const dest = this.req.get('X-Override-To');
const uri = parseUri(contact);
uri.user = dest;
destUri = stringifyUri(uri);
this.logger.info(`overriding destination user with ${dest}, so final uri is ${destUri}`);
}
const contact = this.req.locals.registration.contact;
if (contact.includes('transport=ws')) {
uris = [contact];
}
else {
proxy = this.req.locals.registration.proxy;
uris = [this.req.uri];
uris = [destUri];
}
}
else if (this.req.locals.target === 'forward') {
+4127 -12
View File
File diff suppressed because it is too large Load Diff
+1 -2
View File
@@ -35,8 +35,7 @@
"drachtio-fn-b2b-sugar": "^0.0.12",
"drachtio-srf": "^4.4.46",
"jambonz-mw-registrar": "^0.1.3",
"pino": "^6.11.0",
"rtpengine-client": "^0.1.1"
"pino": "^6.11.0"
},
"devDependencies": {
"blue-tape": "^1.0.0",