[Asterisk-code-review] chan_pjsip: Incorporate session reference count into transfer_refer(). (asterisk[master])
Dan Cropp
asteriskteam at digium.com
Tue Dec 8 09:00:21 CST 2020
Dan Cropp has uploaded this change for review. ( https://gerrit.asterisk.org/c/asterisk/+/15208 )
Change subject: chan_pjsip: Incorporate session reference count into transfer_refer().
......................................................................
chan_pjsip: Incorporate session reference count into transfer_refer().
Add session reference count for PJSIP REFER. The call could be terminated
prior to the result of the transfer. In that scenario, when the SUBSCRIBE/NOTIFY
occurred several minutes later, it would attempt to access a session which was
no longer valid.
ASTERISK-29201 #close
Reported-by: Dan Cropp
Change-Id: I3fd92fd14b4e3844d3d7b0f60fe417a4df5f2435
---
M channels/chan_pjsip.c
1 file changed, 6 insertions(+), 0 deletions(-)
git pull ssh://gerrit.asterisk.org:29418/asterisk refs/changes/08/15208/1
diff --git a/channels/chan_pjsip.c b/channels/chan_pjsip.c
index 93889fc..8e74d7d 100644
--- a/channels/chan_pjsip.c
+++ b/channels/chan_pjsip.c
@@ -2004,6 +2004,9 @@
chan = session->channel;
if (!chan) {
+ /* If there is no channel, terminate the subscription and release the session */
+ pjsip_evsub_terminate(sub, PJ_FALSE);
+ ao2_cleanup(session);
return;
}
@@ -2094,6 +2097,7 @@
if (res) {
ast_queue_control_data(session->channel, AST_CONTROL_TRANSFER, &message, sizeof(message));
+ ao2_cleanup(session);
}
}
@@ -2118,12 +2122,14 @@
}
pjsip_evsub_set_mod_data(sub, refer_callback_module.id, session);
+ ao2_ref(session, +1);
if (pjsip_xfer_initiate(sub, pj_cstr(&tmp, target), &packet) != PJ_SUCCESS) {
message = AST_TRANSFER_FAILED;
ast_queue_control_data(session->channel, AST_CONTROL_TRANSFER, &message, sizeof(message));
pjsip_evsub_terminate(sub, PJ_FALSE);
+ ao2_cleanup(session);
return;
}
--
To view, visit https://gerrit.asterisk.org/c/asterisk/+/15208
To unsubscribe, or for help writing mail filters, visit https://gerrit.asterisk.org/settings
Gerrit-Project: asterisk
Gerrit-Branch: master
Gerrit-Change-Id: I3fd92fd14b4e3844d3d7b0f60fe417a4df5f2435
Gerrit-Change-Number: 15208
Gerrit-PatchSet: 1
Gerrit-Owner: Dan Cropp <dan at amtelco.com>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-code-review/attachments/20201208/e65b65e6/attachment.html>
More information about the asterisk-code-review
mailing list