mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-13 00:04:53 +00:00
PJSIP: Send initial connected line information
This makes chan_pjsip send connected line information when it is called so that connected line information is available on the connected channel. (closes issue DPMA-442) Reported by: John Bigelow Review: https://reviewboard.asterisk.org/r/3584/ git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@415191 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -1467,6 +1467,38 @@ static int chan_pjsip_digit_end(struct ast_channel *ast, char digit, unsigned in
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void update_initial_connected_line(struct ast_sip_session *session)
|
||||||
|
{
|
||||||
|
struct ast_party_connected_line connected;
|
||||||
|
struct ast_set_party_connected_line update_connected;
|
||||||
|
struct ast_sip_endpoint_id_configuration *id = &session->endpoint->id;
|
||||||
|
|
||||||
|
if (!id->self.number.valid && !id->self.name.valid) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Supply initial connected line information if available. */
|
||||||
|
memset(&update_connected, 0, sizeof(update_connected));
|
||||||
|
ast_party_connected_line_init(&connected);
|
||||||
|
connected.id.number = id->self.number;
|
||||||
|
connected.id.name = id->self.name;
|
||||||
|
connected.id.tag = id->self.tag;
|
||||||
|
connected.source = AST_CONNECTED_LINE_UPDATE_SOURCE_ANSWER;
|
||||||
|
|
||||||
|
if (connected.id.number.valid) {
|
||||||
|
update_connected.id.number = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (connected.id.name.valid) {
|
||||||
|
update_connected.id.name = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Invalidate any earlier private connected id representation */
|
||||||
|
ast_set_party_id_all(&update_connected.priv);
|
||||||
|
|
||||||
|
ast_channel_queue_connected_line_update(session->channel, &connected, &update_connected);
|
||||||
|
}
|
||||||
|
|
||||||
static int call(void *data)
|
static int call(void *data)
|
||||||
{
|
{
|
||||||
struct ast_sip_session *session = data;
|
struct ast_sip_session *session = data;
|
||||||
@@ -1477,6 +1509,7 @@ static int call(void *data)
|
|||||||
if (res) {
|
if (res) {
|
||||||
ast_queue_hangup(session->channel);
|
ast_queue_hangup(session->channel);
|
||||||
} else {
|
} else {
|
||||||
|
update_initial_connected_line(session);
|
||||||
ast_sip_session_send_request(session, tdata);
|
ast_sip_session_send_request(session, tdata);
|
||||||
}
|
}
|
||||||
ao2_ref(session, -1);
|
ao2_ref(session, -1);
|
||||||
|
Reference in New Issue
Block a user