<p>Richard Mudgett has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.asterisk.org/7511">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">chan_pjsip/res_pjsip: Add CHANNEL(pjsip,request_uri)<br><br>This patch does three things associated with the initial incoming INVITE<br>request URI.<br><br>1) Add access to the full initial incoming INVITE request URI.<br><br>2) We were not setting DNID on incoming PJSIP channels.  The DNID is the<br>user portion of the initial incoming INVITE Request-URI.  The value is<br>accessed by reading CALLERID(dnid).<br><br>3) Fix CHANNEL(pjsip,target_uri) documentation.<br><br>* The initial incoming INVITE request URI is now available using<br>CHANNEL(pjsip,request_uri).<br><br>* Set the DNID on PJSIP channel creation so CALLERID(dnid) can return the<br>initial incoming INVITE request URI user portion.<br><br>* CHANNEL(pjsip,target_uri) now correctly documents that the target URI is<br>the contact URI.<br><br>ASTERISK-27478<br><br>Change-Id: I512e60d1f162395c946451becb37af3333337b33<br>---<br>M channels/chan_pjsip.c<br>M channels/pjsip/dialplan_functions.c<br>M include/asterisk/res_pjsip_session.h<br>M res/res_pjsip_session.c<br>4 files changed, 24 insertions(+), 1 deletion(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.asterisk.org:29418/asterisk refs/changes/11/7511/1</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 e4e8fa5..69bcc18 100644<br>--- a/channels/chan_pjsip.c<br>+++ b/channels/chan_pjsip.c<br>@@ -605,6 +605,11 @@<br>       ast_party_id_copy(&ast_channel_caller(chan)->id, &session->id);<br>         ast_party_id_copy(&ast_channel_caller(chan)->ani, &session->id);<br> <br>+    if (!ast_strlen_zero(exten)) {<br>+               /* Set provided DNID on the new channel. */<br>+          ast_channel_dialed(chan)->number.str = ast_strdup(exten);<br>+ }<br>+<br>  ast_channel_priority_set(chan, 1);<br> <br>         ast_channel_callgroup_set(chan, session->endpoint->pickup.callgroup);<br>diff --git a/channels/pjsip/dialplan_functions.c b/channels/pjsip/dialplan_functions.c<br>index 861edf7..329c49f 100644<br>--- a/channels/pjsip/dialplan_functions.c<br>+++ b/channels/pjsip/dialplan_functions.c<br>@@ -388,7 +388,7 @@<br>                                                 </enumlist><br>                                     </enum><br>                                         <enum name="target_uri"><br>-                                             <para>The request URI of the <literal>INVITE</literal> request associated with the creation of this channel.</para><br>+                                          <para>The contact URI where requests are sent.</para><br>                                     </enum><br>                                         <enum name="local_uri"><br>                                               <para>The local URI.</para><br>@@ -401,6 +401,10 @@<br>                                         </enum><br>                                         <enum name="remote_tag"><br>                                              <para>Tag in To header</para><br>+                                    </enum><br>+                                        <enum name="request_uri"><br>+                                            <para>The request URI of the incoming <literal>INVITE</literal><br>+                                            associated with the creation of this channel.</para><br>                                    </enum><br>                                         <enum name="t38state"><br>                                                <para>The current state of any T.38 fax on this channel.</para><br>@@ -708,6 +712,12 @@<br>             ast_copy_pj_str(buf, &dlg->remote.info->tag, buflen);<br>               buf_copy = ast_strdupa(buf);<br>          ast_escape_quoted(buf_copy, buf, buflen);<br>+    } else if (!strcmp(type, "request_uri")) {<br>+         if (channel->session->request_uri) {<br>+                   pjsip_uri_print(PJSIP_URI_IN_REQ_URI, channel->session->request_uri, buf, buflen);<br>+                     buf_copy = ast_strdupa(buf);<br>+                 ast_escape_quoted(buf_copy, buf, buflen);<br>+            }<br>     } else if (!strcmp(type, "t38state")) {<br>             ast_copy_string(buf, t38state_to_string[channel->session->t38state], buflen);<br>   } else if (!strcmp(type, "local_addr")) {<br>diff --git a/include/asterisk/res_pjsip_session.h b/include/asterisk/res_pjsip_session.h<br>index de6589a..6d506a3 100644<br>--- a/include/asterisk/res_pjsip_session.h<br>+++ b/include/asterisk/res_pjsip_session.h<br>@@ -211,6 +211,8 @@<br>     unsigned int ended_while_deferred:1;<br>  /*! DTMF mode to use with this session, from endpoint but can change */<br>       enum ast_sip_dtmf_mode dtmf;<br>+ /*! Initial incoming INVITE Request-URI.  NULL otherwise. */<br>+ pjsip_uri *request_uri;<br> };<br> <br> typedef int (*ast_sip_session_request_creation_cb)(struct ast_sip_session *session, pjsip_tx_data *tdata);<br>diff --git a/res/res_pjsip_session.c b/res/res_pjsip_session.c<br>index 781d3e4..55b9120 100644<br>--- a/res/res_pjsip_session.c<br>+++ b/res/res_pjsip_session.c<br>@@ -2818,6 +2818,12 @@<br>             ast_copy_pj_str(domain, &sip_ruri->host, size);<br>                pbx_builtin_setvar_helper(session->channel, "SIPDOMAIN", domain);<br> <br>+            /*<br>+            * Save off the INVITE Request-URI in case it is<br>+              * needed: CHANNEL(pjsip,request_uri)<br>+                 */<br>+          session->request_uri = pjsip_uri_clone(session->inv_session->pool, ruri);<br>+<br>                 return SIP_GET_DEST_EXTEN_FOUND;<br>      }<br> <br></pre><p>To view, visit <a href="https://gerrit.asterisk.org/7511">change 7511</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/7511"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: asterisk </div>
<div style="display:none"> Gerrit-Branch: 15 </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: I512e60d1f162395c946451becb37af3333337b33 </div>
<div style="display:none"> Gerrit-Change-Number: 7511 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Richard Mudgett <rmudgett@digium.com> </div>