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
........

Merged revisions 359620 from http://svn.asterisk.org/svn/asterisk/branches/10


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@359644 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Richard Mudgett 2012-03-15 18:32:22 +00:00
parent 831af9fbc7
commit e9703da1d5
2 changed files with 20 additions and 5 deletions

View File

@ -1061,7 +1061,10 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in,
ast_connected_line_copy_from_caller(&connected_caller, ast_channel_caller(outgoing->chan));
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_sub(outgoing->chan, in, &connected_caller, 0) &&
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);
}
}
@ -1126,7 +1129,10 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in,
ast_connected_line_copy_from_caller(&connected_caller, ast_channel_caller(c));
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_sub(c, in, &connected_caller, 0) &&
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);
}
}
@ -1199,7 +1205,10 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in,
ast_connected_line_copy_from_caller(&connected_caller, ast_channel_caller(c));
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_sub(c, in, &connected_caller, 0) &&
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);
}
}

View File

@ -3756,7 +3756,10 @@ static struct callattempt *wait_for_answer(struct queue_ent *qe, struct callatte
ast_connected_line_copy_from_caller(&connected_caller, ast_channel_caller(o->chan));
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_sub(o->chan, in, &connected_caller, 0) &&
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);
}
}
@ -3886,7 +3889,10 @@ static struct callattempt *wait_for_answer(struct queue_ent *qe, struct callatte
ast_connected_line_copy_from_caller(&connected_caller, ast_channel_caller(o->chan));
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_sub(o->chan, in, &connected_caller, 0) &&
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);
}
}