From 93bfaba6dac48ad32d6c343106465f7051fdac92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Luis=20Mill=C3=A1n?= Date: Sat, 5 Nov 2022 17:07:03 +0100 Subject: [PATCH 1/3] Dialog/RequestSender: avoid circular dependency Fixes #705. --- lib/Dialog.js | 12 ++++++++++-- lib/Dialog/RequestSender.js | 3 +-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/lib/Dialog.js b/lib/Dialog.js index 795a86d..18d0dd7 100644 --- a/lib/Dialog.js +++ b/lib/Dialog.js @@ -9,8 +9,9 @@ const logger = new Logger('Dialog'); const C = { // Dialog states. - STATUS_EARLY : 1, - STATUS_CONFIRMED : 2 + STATUS_EARLY : 1, + STATUS_CONFIRMED : 2, + STATUS_TERMINATED : 3 }; // RFC 3261 12.1. @@ -125,6 +126,11 @@ module.exports = class Dialog return this._uas_pending_reply; } + isTerminated() + { + return this._status === C.STATUS_TERMINATED; + } + update(message, type) { this._state = C.STATUS_CONFIRMED; @@ -141,7 +147,9 @@ module.exports = class Dialog terminate() { logger.debug(`dialog ${this._id.toString()} deleted`); + this._ua.destroyDialog(this); + this._state = C.STATUS_TERMINATED; } sendRequest(method, options = {}) diff --git a/lib/Dialog/RequestSender.js b/lib/Dialog/RequestSender.js index dad6664..e165908 100644 --- a/lib/Dialog/RequestSender.js +++ b/lib/Dialog/RequestSender.js @@ -114,8 +114,7 @@ module.exports = class DialogRequestSender this._request.cseq = this._dialog.local_seqnum += 1; this._reattemptTimer = setTimeout(() => { - // TODO: look at dialog state instead. - if (this._dialog.owner.status !== RTCSession.C.STATUS_TERMINATED) + if (!this._dialog.isTerminated()) { this._reattempt = true; this.send(); From 542591775be492dc77358adaab4702d1458d0f08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Luis=20Mill=C3=A1n?= Date: Sat, 5 Nov 2022 17:08:06 +0100 Subject: [PATCH 2/3] remove unneeded include statement --- lib/Dialog/RequestSender.js | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/Dialog/RequestSender.js b/lib/Dialog/RequestSender.js index e165908..0ca882e 100644 --- a/lib/Dialog/RequestSender.js +++ b/lib/Dialog/RequestSender.js @@ -1,6 +1,5 @@ const JsSIP_C = require('../Constants'); const Transactions = require('../Transactions'); -const RTCSession = require('../RTCSession'); const RequestSender = require('../RequestSender'); // Default event handlers. From 75a6e110c3ed19136a21bdce95ed600d667c95ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Luis=20Mill=C3=A1n?= Date: Sat, 5 Nov 2022 17:09:44 +0100 Subject: [PATCH 3/3] Update CHANGELOG --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d30c944..b7ac662 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,12 @@ CHANGELOG ========= +### NEXT + + +* Dialog/RequestSender: Avoid circular dependency (#788). + + ### 3.9.3