From: Matt Jordan Date: Thu, 11 Jun 2015 23:52:09 +0000 (-0500) Subject: chan_pjsip: Set the context and extension on the channel when created X-Git-Tag: 13.5.0-rc1~99 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=30a0f2d9acd0f7c14013d830a0b4bf673d0af2d0;p=thirdparty%2Fasterisk.git chan_pjsip: Set the context and extension on the channel when created 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 --- diff --git a/channels/chan_pjsip.c b/channels/chan_pjsip.c index b7d7065f27..c6a02d9c73 100644 --- a/channels/chan_pjsip.c +++ b/channels/chan_pjsip.c @@ -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);