mirror of
https://github.com/jambonz/jambonz-feature-server.git
synced 2025-12-21 00:58:34 +00:00
fix hangup headers (#583)
* fix hangup headers * no need for callback * fix test failure --------- Co-authored-by: Dave Horton <daveh@beachdognet.com>
This commit is contained in:
@@ -1883,7 +1883,7 @@ Duration=${duration} `
|
|||||||
wrapDialog(dlg) {
|
wrapDialog(dlg) {
|
||||||
dlg.connectTime = moment();
|
dlg.connectTime = moment();
|
||||||
const origDestroy = dlg.destroy.bind(dlg);
|
const origDestroy = dlg.destroy.bind(dlg);
|
||||||
dlg.destroy = () => {
|
dlg.destroy = (opts) => {
|
||||||
if (dlg.connected) {
|
if (dlg.connected) {
|
||||||
dlg.connected = false;
|
dlg.connected = false;
|
||||||
dlg.destroy = origDestroy;
|
dlg.destroy = origDestroy;
|
||||||
@@ -1892,7 +1892,7 @@ Duration=${duration} `
|
|||||||
this.emit('callStatusChange', {callStatus: CallStatus.Completed, duration});
|
this.emit('callStatusChange', {callStatus: CallStatus.Completed, duration});
|
||||||
this.logger.debug('CallSession: call terminated by jambonz');
|
this.logger.debug('CallSession: call terminated by jambonz');
|
||||||
this.rootSpan.setAttributes({'call.termination': 'hangup by jambonz'});
|
this.rootSpan.setAttributes({'call.termination': 'hangup by jambonz'});
|
||||||
origDestroy().catch((err) => this.logger.info({err}, 'CallSession - error destroying dialog'));
|
origDestroy(opts).catch((err) => this.logger.info({err}, 'CallSession - error destroying dialog'));
|
||||||
if (this.wakeupResolver) {
|
if (this.wakeupResolver) {
|
||||||
this.wakeupResolver({reason: 'session ended'});
|
this.wakeupResolver({reason: 'session ended'});
|
||||||
this.wakeupResolver = null;
|
this.wakeupResolver = null;
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ services:
|
|||||||
ipv4_address: 172.38.0.7
|
ipv4_address: 172.38.0.7
|
||||||
|
|
||||||
drachtio:
|
drachtio:
|
||||||
image: drachtio/drachtio-server:latest
|
image: drachtio/drachtio-server:0.8.24
|
||||||
restart: always
|
restart: always
|
||||||
command: drachtio --contact "sip:*;transport=udp" --mtu 4096 --address 0.0.0.0 --port 9022
|
command: drachtio --contact "sip:*;transport=udp" --mtu 4096 --address 0.0.0.0 --port 9022
|
||||||
ports:
|
ports:
|
||||||
@@ -57,7 +57,7 @@ services:
|
|||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
|
|
||||||
freeswitch:
|
freeswitch:
|
||||||
image: drachtio/drachtio-freeswitch-mrf:latest
|
image: drachtio/drachtio-freeswitch-mrf:0.6.1
|
||||||
restart: always
|
restart: always
|
||||||
command: freeswitch --rtp-range-start 20000 --rtp-range-end 20100
|
command: freeswitch --rtp-range-start 20000 --rtp-range-end 20100
|
||||||
environment:
|
environment:
|
||||||
|
|||||||
53
test/hangup-test.js
Normal file
53
test/hangup-test.js
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
const test = require('tape');
|
||||||
|
const { sippUac } = require('./sipp')('test_fs');
|
||||||
|
const clearModule = require('clear-module');
|
||||||
|
const {provisionCallHook, provisionCustomHook} = require('./utils')
|
||||||
|
const bent = require('bent');
|
||||||
|
const getJSON = bent('json')
|
||||||
|
|
||||||
|
process.on('unhandledRejection', (reason, p) => {
|
||||||
|
console.log('Unhandled Rejection at: Promise', p, 'reason:', reason);
|
||||||
|
});
|
||||||
|
|
||||||
|
function connect(connectable) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
connectable.on('connect', () => {
|
||||||
|
return resolve();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
test('\'hangup\' custom headers', async(t) => {
|
||||||
|
clearModule.all();
|
||||||
|
const {srf, disconnect} = require('../app');
|
||||||
|
|
||||||
|
try {
|
||||||
|
await connect(srf);
|
||||||
|
|
||||||
|
// GIVEN
|
||||||
|
const verbs = [
|
||||||
|
{
|
||||||
|
verb: 'play',
|
||||||
|
url: 'https://example.com/example.mp3'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"verb": "hangup",
|
||||||
|
"headers": {
|
||||||
|
"X-Reason" : "maximum call duration exceeded"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
const from = 'hangup_custom_headers';
|
||||||
|
await provisionCallHook(from, verbs)
|
||||||
|
|
||||||
|
// THEN
|
||||||
|
await sippUac('uac-success-received-bye.xml', '172.38.0.10', from);
|
||||||
|
t.pass('play: succeeds when using single link');
|
||||||
|
disconnect();
|
||||||
|
} catch (err) {
|
||||||
|
console.log(`error received: ${err}`);
|
||||||
|
disconnect();
|
||||||
|
t.error(err);
|
||||||
|
}
|
||||||
|
});
|
||||||
@@ -16,7 +16,8 @@ require('./listen-tests');
|
|||||||
require('./config-test');
|
require('./config-test');
|
||||||
require('./queue-test');
|
require('./queue-test');
|
||||||
require('./in-dialog-test');
|
require('./in-dialog-test');
|
||||||
require('./http-proxy-test');
|
require('./hangup-test');
|
||||||
require('./sdp-utils-test');
|
require('./sdp-utils-test');
|
||||||
|
require('./http-proxy-test');
|
||||||
require('./remove-test-db');
|
require('./remove-test-db');
|
||||||
require('./docker_stop');
|
require('./docker_stop');
|
||||||
Reference in New Issue
Block a user