From: Richard Mudgett Date: Thu, 15 Mar 2012 18:22:01 +0000 (+0000) Subject: Add missing connected line macro calls to initial dial for Dial and Queue apps. X-Git-Tag: 10.3.0~30 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3fc64ea06b1ee4c9d38878070e80e70b33e7ce68;p=thirdparty%2Fasterisk.git Add missing connected line macro calls to initial dial for Dial and Queue apps. The connected line interception macros do not get executed when the outgoing channel is initially created and that channel's caller-id is implicitly imported into the incoming channel's connected line data. If you are using the interception macros, you would expect that they get run for every change to a channel's connected line information outside of normal dialplan execution. Review: https://reviewboard.asterisk.org/r/1817/ ........ Merged revisions 359609 from http://svn.asterisk.org/svn/asterisk/branches/1.8 git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/10@359620 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/apps/app_dial.c b/apps/app_dial.c index 82a4d2e3f9..b5d06870fd 100644 --- a/apps/app_dial.c +++ b/apps/app_dial.c @@ -1060,7 +1060,9 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in, ast_connected_line_copy_from_caller(&connected_caller, &outgoing->chan->caller); ast_channel_unlock(outgoing->chan); connected_caller.source = AST_CONNECTED_LINE_UPDATE_SOURCE_ANSWER; - ast_channel_update_connected_line(in, &connected_caller, NULL); + if (ast_channel_connected_line_macro(outgoing->chan, in, &connected_caller, 1, 0)) { + ast_channel_update_connected_line(in, &connected_caller, NULL); + } ast_party_connected_line_free(&connected_caller); } } @@ -1124,7 +1126,9 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in, ast_connected_line_copy_from_caller(&connected_caller, &c->caller); ast_channel_unlock(c); connected_caller.source = AST_CONNECTED_LINE_UPDATE_SOURCE_ANSWER; - ast_channel_update_connected_line(in, &connected_caller, NULL); + if (ast_channel_connected_line_macro(c, in, &connected_caller, 1, 0)) { + ast_channel_update_connected_line(in, &connected_caller, NULL); + } ast_party_connected_line_free(&connected_caller); } } @@ -1196,7 +1200,9 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in, ast_connected_line_copy_from_caller(&connected_caller, &c->caller); ast_channel_unlock(c); connected_caller.source = AST_CONNECTED_LINE_UPDATE_SOURCE_ANSWER; - ast_channel_update_connected_line(in, &connected_caller, NULL); + if (ast_channel_connected_line_macro(c, in, &connected_caller, 1, 0)) { + ast_channel_update_connected_line(in, &connected_caller, NULL); + } ast_party_connected_line_free(&connected_caller); } } diff --git a/apps/app_queue.c b/apps/app_queue.c index fa94b402ba..03ca5b35b9 100644 --- a/apps/app_queue.c +++ b/apps/app_queue.c @@ -3613,7 +3613,9 @@ static struct callattempt *wait_for_answer(struct queue_ent *qe, struct callatte ast_connected_line_copy_from_caller(&connected_caller, &o->chan->caller); ast_channel_unlock(o->chan); connected_caller.source = AST_CONNECTED_LINE_UPDATE_SOURCE_ANSWER; - ast_channel_update_connected_line(in, &connected_caller, NULL); + if (ast_channel_connected_line_macro(o->chan, in, &connected_caller, 1, 0)) { + ast_channel_update_connected_line(in, &connected_caller, NULL); + } ast_party_connected_line_free(&connected_caller); } } @@ -3742,7 +3744,9 @@ static struct callattempt *wait_for_answer(struct queue_ent *qe, struct callatte ast_connected_line_copy_from_caller(&connected_caller, &o->chan->caller); ast_channel_unlock(o->chan); connected_caller.source = AST_CONNECTED_LINE_UPDATE_SOURCE_ANSWER; - ast_channel_update_connected_line(in, &connected_caller, NULL); + if (ast_channel_connected_line_macro(o->chan, in, &connected_caller, 1, 0)) { + ast_channel_update_connected_line(in, &connected_caller, NULL); + } ast_party_connected_line_free(&connected_caller); } }