<p>Jenkins2 <strong>merged</strong> this change.</p><p><a href="https://gerrit.asterisk.org/9130">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Joshua Colp: Looks good to me, but someone else must approve
  Benjamin Keith Ford: Looks good to me, but someone else must approve
  Richard Mudgett: Looks good to me, approved
  Jenkins2: Approved for Submit

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">chan_pjsip:  Register for "BEFORE_MEDIA" responses<br><br>chan_pjsip wasn't registering for "BEFORE_MEDIA" responses which meant<br>it was not updating HANGUPCAUSE for 4XX responses.  If the remote end<br>sent a "180 Ringing", then a "486 Busy", the hangup cause was left at<br>"180 Normal Clearing".<br><br>* Removed chan_pjsip_incoming_response from the original session<br>  supplement (which was handling only "AFTER MEDIA") and added it to a<br>  new session supplement which accepts both "BEFORE_MEDIA" and<br>  "AFTER_MEDIA".<br><br>* Also cleaned up some cleanup code in load module.<br><br>ASTERISK-27902<br><br>Change-Id: If9b860541887aca8ac2c9f2ed51ceb0550fb007a<br>---<br>M channels/chan_pjsip.c<br>1 file changed, 19 insertions(+), 11 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">diff --git a/channels/chan_pjsip.c b/channels/chan_pjsip.c<br>index c7344d2..4da0361 100644<br>--- a/channels/chan_pjsip.c<br>+++ b/channels/chan_pjsip.c<br>@@ -147,9 +147,16 @@<br>       .session_begin = chan_pjsip_session_begin,<br>    .session_end = chan_pjsip_session_end,<br>        .incoming_request = chan_pjsip_incoming_request,<br>-     .incoming_response = chan_pjsip_incoming_response,<br>    /* It is important that this supplement runs after media has been negotiated */<br>       .response_priority = AST_SIP_SESSION_AFTER_MEDIA,<br>+};<br>+<br>+/*! \brief SIP session supplement structure just for responses */<br>+static struct ast_sip_session_supplement chan_pjsip_supplement_response = {<br>+  .method = "INVITE",<br>+        .priority = AST_SIP_SUPPLEMENT_PRIORITY_CHANNEL,<br>+     .incoming_response = chan_pjsip_incoming_response,<br>+   .response_priority = AST_SIP_SESSION_BEFORE_MEDIA | AST_SIP_SESSION_AFTER_MEDIA,<br> };<br> <br> static int chan_pjsip_incoming_ack(struct ast_sip_session *session, struct pjsip_rx_data *rdata);<br>@@ -2837,6 +2844,11 @@<br>          goto end;<br>     }<br> <br>+ if (ast_sip_session_register_supplement(&chan_pjsip_supplement_response)) {<br>+              ast_log(LOG_ERROR, "Unable to register PJSIP supplement\n");<br>+               goto end;<br>+    }<br>+<br>  if (!(pjsip_uids_onhold = ao2_container_alloc_hash(AO2_ALLOC_OPT_LOCK_RWLOCK,<br>                         AO2_CONTAINER_ALLOC_OPT_DUPS_REJECT, 37, uid_hold_hash_fn,<br>                    uid_hold_sort_fn, NULL))) {<br>@@ -2846,31 +2858,21 @@<br> <br>       if (ast_sip_session_register_supplement(&call_pickup_supplement)) {<br>               ast_log(LOG_ERROR, "Unable to register PJSIP call pickup supplement\n");<br>-           ast_sip_session_unregister_supplement(&chan_pjsip_supplement);<br>            goto end;<br>     }<br> <br>  if (ast_sip_session_register_supplement(&pbx_start_supplement)) {<br>                 ast_log(LOG_ERROR, "Unable to register PJSIP pbx start supplement\n");<br>-             ast_sip_session_unregister_supplement(&chan_pjsip_supplement);<br>-           ast_sip_session_unregister_supplement(&call_pickup_supplement);<br>           goto end;<br>     }<br> <br>  if (ast_sip_session_register_supplement(&chan_pjsip_ack_supplement)) {<br>            ast_log(LOG_ERROR, "Unable to register PJSIP ACK supplement\n");<br>-           ast_sip_session_unregister_supplement(&pbx_start_supplement);<br>-            ast_sip_session_unregister_supplement(&chan_pjsip_supplement);<br>-           ast_sip_session_unregister_supplement(&call_pickup_supplement);<br>           goto end;<br>     }<br> <br>  if (pjsip_channel_cli_register()) {<br>           ast_log(LOG_ERROR, "Unable to register PJSIP Channel CLI\n");<br>-              ast_sip_session_unregister_supplement(&chan_pjsip_ack_supplement);<br>-               ast_sip_session_unregister_supplement(&pbx_start_supplement);<br>-            ast_sip_session_unregister_supplement(&chan_pjsip_supplement);<br>-           ast_sip_session_unregister_supplement(&call_pickup_supplement);<br>           goto end;<br>     }<br> <br>@@ -2886,6 +2888,11 @@<br> end:<br>   ao2_cleanup(pjsip_uids_onhold);<br>       pjsip_uids_onhold = NULL;<br>+    ast_sip_session_unregister_supplement(&chan_pjsip_ack_supplement);<br>+       ast_sip_session_unregister_supplement(&pbx_start_supplement);<br>+    ast_sip_session_unregister_supplement(&chan_pjsip_supplement_response);<br>+  ast_sip_session_unregister_supplement(&chan_pjsip_supplement);<br>+   ast_sip_session_unregister_supplement(&call_pickup_supplement);<br>   ast_custom_function_unregister(&dtmf_mode_function);<br>      ast_custom_function_unregister(&media_offer_function);<br>    ast_custom_function_unregister(&chan_pjsip_dial_contacts_function);<br>@@ -2904,6 +2911,7 @@<br> <br>     pjsip_channel_cli_unregister();<br> <br>+   ast_sip_session_unregister_supplement(&chan_pjsip_supplement_response);<br>   ast_sip_session_unregister_supplement(&chan_pjsip_supplement);<br>    ast_sip_session_unregister_supplement(&pbx_start_supplement);<br>     ast_sip_session_unregister_supplement(&chan_pjsip_ack_supplement);<br></pre><p>To view, visit <a href="https://gerrit.asterisk.org/9130">change 9130</a>. To unsubscribe, 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/9130"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: asterisk </div>
<div style="display:none"> Gerrit-Branch: 13 </div>
<div style="display:none"> Gerrit-MessageType: merged </div>
<div style="display:none"> Gerrit-Change-Id: If9b860541887aca8ac2c9f2ed51ceb0550fb007a </div>
<div style="display:none"> Gerrit-Change-Number: 9130 </div>
<div style="display:none"> Gerrit-PatchSet: 2 </div>
<div style="display:none"> Gerrit-Owner: George Joseph <gjoseph@digium.com> </div>
<div style="display:none"> Gerrit-Reviewer: Benjamin Keith Ford <bford@digium.com> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins2 </div>
<div style="display:none"> Gerrit-Reviewer: Joshua Colp <jcolp@digium.com> </div>
<div style="display:none"> Gerrit-Reviewer: Richard Mudgett <rmudgett@digium.com> </div>