res_pjsip_session: Access SIPDOMAIN via Dialplan.
authorAlexander Traud <pabstraud@compuserve.com>
Thu, 22 Dec 2016 15:13:46 +0000 (16:13 +0100)
committerAlexander Traud <pabstraud@compuserve.com>
Wed, 4 Jan 2017 13:11:30 +0000 (14:11 +0100)
This feature was available in the SIP channel driver chan_sip. For example,
Asterisk is the outbound proxy and has to handle all SIP-URIs, even domains not
local to Asterisk. In that case, SIPDOMAIN is used in the Dialplan, to detect
and dial remote SIP-URIs. This change here sets the SIP destination domain of
an inbound call (SIPDOMAIN) in the SIP channel driver res_pjsip as well.

ASTERISK-26670 #close

Change-Id: I27c880dc404a3c1c6792e1ba3545475339577243

res/res_pjsip_session.c

index be07e94..ad9670c 100644 (file)
@@ -2000,6 +2000,12 @@ static enum sip_get_destination_result get_destination(struct ast_sip_session *s
 
        if (!strcmp(session->exten, pickupexten) ||
                ast_exists_extension(NULL, session->endpoint->context, session->exten, 1, NULL)) {
+               size_t size = pj_strlen(&sip_ruri->host) + 1;
+               char *domain = ast_alloca(size);
+
+               ast_copy_pj_str(domain, &sip_ruri->host, size);
+               pbx_builtin_setvar_helper(session->channel, "SIPDOMAIN", domain);
+
                return SIP_GET_DEST_EXTEN_FOUND;
        }
        /* XXX In reality, we'll likely have further options so that partial matches