<p>Richard Mudgett has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.asterisk.org/7512">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/12/7512/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 a0fc965..732243f 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/7512">change 7512</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/7512"/><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-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: I512e60d1f162395c946451becb37af3333337b33 </div>
<div style="display:none"> Gerrit-Change-Number: 7512 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Richard Mudgett <rmudgett@digium.com> </div>