]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
chan_pjsip: Set the context and extension on the channel when created 46/646/3
authorMatt Jordan <mjordan@digium.com>
Thu, 11 Jun 2015 23:52:09 +0000 (18:52 -0500)
committerMatt Jordan <mjordan@digium.com>
Fri, 12 Jun 2015 00:04:48 +0000 (19:04 -0500)
Prior to this patch, chan_pjsip was failing to pass the endpoint's
context and the desired extension to the ast_channel_alloc_* routine.
This caused a new channel snapshot to be issued without a context and
extension, which can cause some reporting issues for users of AMI, CEL,
and other APIs. The channel driver would later set the context and
extension on the channel such that the channel would start in the
correct location in the dialplan, but the information reported in the
initial event would be incorrect.

This patch modifies the channel driver such that it now passes the
context and extension directly into the allocation routine. This
provides the information in the new channel snapshot published over
Stasis.

ASTERISK-25156 #close
Reported by: cloos

Change-Id: Ic6f8542836e596db8f662071d118e8f934fdf25e

channels/chan_pjsip.c

index b7d7065f275fa33e39d6ad5d2a016b2e65df110e..c6a02d9c735a8a96bd1ab14fc42af2ebed6faa3b 100644 (file)
@@ -388,7 +388,9 @@ static struct ast_channel *chan_pjsip_new(struct ast_sip_session *session, int s
        chan = ast_channel_alloc_with_endpoint(1, state,
                S_COR(session->id.number.valid, session->id.number.str, ""),
                S_COR(session->id.name.valid, session->id.name.str, ""),
-               session->endpoint->accountcode, "", "", assignedids, requestor, 0,
+               session->endpoint->accountcode,
+               exten, session->endpoint->context,
+               assignedids, requestor, 0,
                session->endpoint->persistent, "PJSIP/%s-%08x",
                ast_sorcery_object_get_id(session->endpoint),
                (unsigned) ast_atomic_fetchadd_int((int *) &chan_idx, +1));
@@ -445,8 +447,6 @@ static struct ast_channel *chan_pjsip_new(struct ast_sip_session *session, int s
        ast_party_id_copy(&ast_channel_caller(chan)->id, &session->id);
        ast_party_id_copy(&ast_channel_caller(chan)->ani, &session->id);
 
-       ast_channel_context_set(chan, session->endpoint->context);
-       ast_channel_exten_set(chan, S_OR(exten, "s"));
        ast_channel_priority_set(chan, 1);
 
        ast_channel_callgroup_set(chan, session->endpoint->pickup.callgroup);