]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
chan_pjsip: Add tag info in CHANNEL function
authorAndre Nazario <samoied@users.sourceforge.net>
Sat, 26 Aug 2017 02:06:10 +0000 (23:06 -0300)
committerAndre Nazario <samoied@users.sourceforge.net>
Wed, 30 Aug 2017 12:49:55 +0000 (07:49 -0500)
Create local_tag and remote_tag in CHANNEL info to get tag from From and
To headers of a SIP dialog.

ASTERISK-27220

Change-Id: I59b16c4b928896fcbde02ad88f0e98922b15d524

channels/pjsip/dialplan_functions.c

index 857684af66daee6796a9c5a55849e31093d8a51f..ff1b9b78fa9b66c0f5a1a6afc44f38b908b7cb88 100644 (file)
                                        <enum name="local_uri">
                                                <para>The local URI.</para>
                                        </enum>
+                                       <enum name="local_tag">
+                                               <para>Tag in From header</para>
+                                       </enum>
                                        <enum name="remote_uri">
                                                <para>The remote URI.</para>
                                        </enum>
+                                       <enum name="remote_tag">
+                                               <para>Tag in To header</para>
+                                       </enum>
                                        <enum name="t38state">
                                                <para>The current state of any T.38 fax on this channel.</para>
                                                <enumlist>
@@ -691,10 +697,18 @@ static int channel_read_pjsip(struct ast_channel *chan, const char *type, const
                pjsip_uri_print(PJSIP_URI_IN_FROMTO_HDR, dlg->local.info->uri, buf, buflen);
                buf_copy = ast_strdupa(buf);
                ast_escape_quoted(buf_copy, buf, buflen);
+       } else if (!strcmp(type, "local_tag")) {
+               ast_copy_pj_str(buf, &dlg->local.info->tag, buflen);
+               buf_copy = ast_strdupa(buf);
+               ast_escape_quoted(buf_copy, buf, buflen);
        } else if (!strcmp(type, "remote_uri")) {
                pjsip_uri_print(PJSIP_URI_IN_FROMTO_HDR, dlg->remote.info->uri, buf, buflen);
                buf_copy = ast_strdupa(buf);
                ast_escape_quoted(buf_copy, buf, buflen);
+       } else if (!strcmp(type, "remote_tag")) {
+               ast_copy_pj_str(buf, &dlg->remote.info->tag, buflen);
+               buf_copy = ast_strdupa(buf);
+               ast_escape_quoted(buf_copy, buf, buflen);
        } else if (!strcmp(type, "t38state")) {
                ast_copy_string(buf, t38state_to_string[channel->session->t38state], buflen);
        } else if (!strcmp(type, "local_addr")) {