<p>Dan Cropp has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.asterisk.org/c/asterisk/+/15208">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">chan_pjsip: Incorporate session reference count into transfer_refer().<br><br>Add session reference count for PJSIP REFER. The call could be terminated<br>prior to the result of the transfer. In that scenario, when the SUBSCRIBE/NOTIFY<br>occurred several minutes later, it would attempt to access a session which was<br>no longer valid.<br><br>ASTERISK-29201 #close<br>Reported-by: Dan Cropp<br><br>Change-Id: I3fd92fd14b4e3844d3d7b0f60fe417a4df5f2435<br>---<br>M channels/chan_pjsip.c<br>1 file changed, 6 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.asterisk.org:29418/asterisk refs/changes/08/15208/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/channels/chan_pjsip.c b/channels/chan_pjsip.c</span><br><span>index 93889fc..8e74d7d 100644</span><br><span>--- a/channels/chan_pjsip.c</span><br><span>+++ b/channels/chan_pjsip.c</span><br><span>@@ -2004,6 +2004,9 @@</span><br><span> </span><br><span>  chan = session->channel;</span><br><span>  if (!chan) {</span><br><span style="color: hsl(120, 100%, 40%);">+          /* If there is no channel, terminate the subscription and release the session */</span><br><span style="color: hsl(120, 100%, 40%);">+              pjsip_evsub_terminate(sub, PJ_FALSE);</span><br><span style="color: hsl(120, 100%, 40%);">+         ao2_cleanup(session);</span><br><span>                return;</span><br><span>      }</span><br><span> </span><br><span>@@ -2094,6 +2097,7 @@</span><br><span> </span><br><span>    if (res) {</span><br><span>           ast_queue_control_data(session->channel, AST_CONTROL_TRANSFER, &message, sizeof(message));</span><br><span style="color: hsl(120, 100%, 40%);">+             ao2_cleanup(session);</span><br><span>        }</span><br><span> }</span><br><span> </span><br><span>@@ -2118,12 +2122,14 @@</span><br><span>         }</span><br><span> </span><br><span>        pjsip_evsub_set_mod_data(sub, refer_callback_module.id, session);</span><br><span style="color: hsl(120, 100%, 40%);">+     ao2_ref(session, +1);</span><br><span> </span><br><span>    if (pjsip_xfer_initiate(sub, pj_cstr(&tmp, target), &packet) != PJ_SUCCESS) {</span><br><span>                message = AST_TRANSFER_FAILED;</span><br><span>               ast_queue_control_data(session->channel, AST_CONTROL_TRANSFER, &message, sizeof(message));</span><br><span>            pjsip_evsub_terminate(sub, PJ_FALSE);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+             ao2_cleanup(session);</span><br><span>                return;</span><br><span>      }</span><br><span> </span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.asterisk.org/c/asterisk/+/15208">change 15208</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.asterisk.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.asterisk.org/c/asterisk/+/15208"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: asterisk </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I3fd92fd14b4e3844d3d7b0f60fe417a4df5f2435 </div>
<div style="display:none"> Gerrit-Change-Number: 15208 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Dan Cropp <dan@amtelco.com> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>