]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
res_pjsip: Channel variable SIPFROMDOMAIN
authorStas Kobzar <stas@modulis.ca>
Tue, 30 Jul 2019 17:08:27 +0000 (13:08 -0400)
committerGeorge Joseph <gjoseph@digium.com>
Wed, 21 Aug 2019 12:04:29 +0000 (07:04 -0500)
In chan_sip, there was variable SIPFROMDOMAIN that allows to set
From header URI domain per channel. This patch introduces res_pjsip
variable SIPFROMDOMAIN for backward compatibility with chan_sip.

ASTERISK-28489

Change-Id: I715133e43172ce2a1e82093538dc39f9e99e5f2e

res/res_pjsip_session.c

index ee120995dcb9a5e536a7e21cf4176aa9e4e1cb55..0cc514ae0485a269c838298f924a7b844ecd312a 100644 (file)
@@ -766,6 +766,7 @@ static void set_from_header(struct ast_sip_session *session)
        pjsip_sip_uri *dlg_info_uri;
        pjsip_sip_uri *dlg_contact_uri;
        int restricted;
+       const char *pjsip_from_domain;
 
        if (!session->channel || session->saved_from_hdr) {
                return;
@@ -809,6 +810,17 @@ static void set_from_header(struct ast_sip_session *session)
                pj_strdup2(dlg_pool, &dlg_info_uri->host, session->endpoint->fromdomain);
        }
 
+       /*
+        * Channel variable for compatibility with chan_sip SIPFROMDOMAIN
+        */
+       ast_channel_lock(session->channel);
+       pjsip_from_domain = pbx_builtin_getvar_helper(session->channel, "SIPFROMDOMAIN");
+       if (!ast_strlen_zero(pjsip_from_domain)) {
+               ast_debug(3, "From header domain reset by channel variable SIPFROMDOMAIN (%s)\n", pjsip_from_domain);
+               pj_strdup2(dlg_pool, &dlg_info_uri->host, pjsip_from_domain);
+       }
+       ast_channel_unlock(session->channel);
+
        /* We need to save off the non-anonymized From for RPID/PAI generation (for domain) */
        session->saved_from_hdr = pjsip_hdr_clone(dlg_pool, dlg_info);
        ast_sip_add_usereqphone(session->endpoint, dlg_pool, session->saved_from_hdr->uri);