bugfix #30 - outdial race condition for quick caller cancel scenario

This commit is contained in:
Dave Horton
2021-01-22 10:21:52 -05:00
parent d255339dac
commit 7e4654692d
8 changed files with 614 additions and 772 deletions

View File

@@ -114,6 +114,17 @@ class SingleDialer extends Emitter {
this.ep = await ms.createEndpoint();
this.logger.debug(`SingleDialer:exec - created endpoint ${this.ep.uuid}`);
/**
* were we killed whilst we were off getting an endpoint ?
* https://github.com/jambonz/jambonz-feature-server/issues/30
*/
if (this.killed) {
this.logger.info('SingleDialer:exec got quick CANCEL from caller, abort outdial');
this.ep.destroy()
.catch((err) => this.logger.error({err}, 'Error destroying endpoint'));
return;
}
let lastSdp;
const connectStream = async(remoteSdp) => {
if (remoteSdp === lastSdp) return;
@@ -215,6 +226,7 @@ class SingleDialer extends Emitter {
* kill the call in progress or the stable dialog, whichever we have
*/
async kill() {
this.killed = true;
if (this.inviteInProgress) await this.inviteInProgress.cancel();
else if (this.dlg && this.dlg.connected) {
const duration = moment().diff(this.dlg.connectTime, 'seconds');

1359
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
{
"name": "jambonz-feature-server",
"version": "0.2.4",
"version": "0.2.5",
"main": "app.js",
"engines": {
"node": ">= 10.16.0"
@@ -29,6 +29,7 @@
"@jambonz/db-helpers": "^0.4.2",
"@jambonz/realtimedb-helpers": "^0.2.16",
"@jambonz/stats-collector": "^0.0.4",
"aws-sdk": "^2.830.0",
"bent": "^7.3.9",
"cidr-matcher": "^2.1.1",
"debug": "^4.1.1",
@@ -41,6 +42,7 @@
"moment": "^2.27.0",
"parse-url": "^5.0.2",
"pino": "^6.5.1",
"uuid": "^3.4.0",
"verify-aws-sns-signature": "^0.0.6",
"xml2js": "^0.4.23"
},

View File

@@ -1,4 +1,4 @@
const test = require('tape').test ;
const test = require('blue-tape') ;
const exec = require('child_process').exec ;
const pwd = process.env.TRAVIS ? '' : '-p$MYSQL_ROOT_PASSWORD';

View File

@@ -1,6 +1,5 @@
const test = require('tape').test ;
const test = require('blue-tape') ;
const exec = require('child_process').exec ;
const async = require('async');
test('starting docker network..', (t) => {
exec(`docker-compose -f ${__dirname}/docker-compose-testbed.yaml up -d`, (err, stdout, stderr) => {

View File

@@ -1,4 +1,4 @@
const test = require('tape').test ;
const test = require('blue-tape') ;
const exec = require('child_process').exec ;
test('stopping docker network..', (t) => {

View File

@@ -1,4 +1,4 @@
const test = require('tape').test ;
const test = require('blue-tape') ;
const exec = require('child_process').exec ;
const pwd = process.env.TRAVIS ? '' : '-p$MYSQL_ROOT_PASSWORD';

View File

@@ -1,4 +1,4 @@
const test = require('tape');
const test = require('blue-tape');
const debug = require('debug')('drachtio:jambonz:test');
const makeTask = require('../lib/tasks/make_task');
const noop = () => {};