diff --git a/lib/middleware.js b/lib/middleware.js index d2c0153d..9985f969 100644 --- a/lib/middleware.js +++ b/lib/middleware.js @@ -1,5 +1,5 @@ const uuidv4 = require('uuid-random'); -const {CallDirection, AllowedSipRecVerbs} = require('./utils/constants'); +const {CallDirection, AllowedSipRecVerbs, WS_CLOSE_CODES} = require('./utils/constants'); const {parseSiprecPayload} = require('./utils/siprec-utils'); const CallInfo = require('./session/call-info'); const HttpRequestor = require('./utils/http-requestor'); @@ -460,7 +460,7 @@ module.exports = function(srf, logger) { }).catch((err) => this.logger.info({err}, 'Error generating alert for parsing application')); logger.info({err}, `Error retrieving or parsing application: ${err?.message}`); res.send(480, {headers: {'X-Reason': err?.message || 'unknown'}}); - app.requestor.close(); + app.requestor.close(WS_CLOSE_CODES.GoingAway); } } diff --git a/lib/utils/constants.json b/lib/utils/constants.json index d956a363..e3581bd1 100644 --- a/lib/utils/constants.json +++ b/lib/utils/constants.json @@ -283,5 +283,9 @@ "Offline": "OFFLINE", "GracefulShutdownInProgress":"SHUTDOWN_IN_PROGRESS" }, - "FEATURE_SERVER" : "feature-server" + "FEATURE_SERVER" : "feature-server", + "WS_CLOSE_CODES": { + "NormalClosure": 1000, + "GoingAway": 1001 + } } diff --git a/lib/utils/ws-requestor.js b/lib/utils/ws-requestor.js index 6b97a9a2..4fbecaae 100644 --- a/lib/utils/ws-requestor.js +++ b/lib/utils/ws-requestor.js @@ -1,7 +1,7 @@ const assert = require('assert'); const BaseRequestor = require('./base-requestor'); const short = require('short-uuid'); -const {HookMsgTypes} = require('./constants.json'); +const {HookMsgTypes, WS_CLOSE_CODES} = require('./constants.json'); const Websocket = require('ws'); const snakeCaseKeys = require('./snakecase-keys'); const { @@ -261,13 +261,13 @@ class WsRequestor extends BaseRequestor { } } - close() { + close(code = WS_CLOSE_CODES.NormalClosure) { this.closedGracefully = true; - this.logger.debug('WsRequestor:close closing socket'); + this.logger.debug(`WsRequestor:close closing socket with code ${code}`); this._stopPingTimer(); try { if (this.ws) { - this.ws.close(1000); + this.ws.close(code); this.ws.removeAllListeners(); this.ws = null; }