mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-27 06:31:54 +00:00
app_queue: Made pass connected line updates from the caller to ringing queue members.
Party A calls Party B Party B puts Party A on hold. Party B calls a queue. Ringing queue member D sees Party B identification. Party B transfers Party A to the queue. Queue member D does not get a connected line update for Party A. Queue member D answers the call and still sees Party B information. However, if Party A later transfers the call to Party C then queue member D gets a connected line update for Party C. * Made pass connected line updates from the caller to queue members while the queue members are ringing. (closes issue AST-1017) Reported by: Thomas Arimont (closes issue ABE-2886) Reported by: Thomas Arimont Tested by: rmudgett ........ Merged revisions 374801 from https://origsvn.digium.com/svn/asterisk/be/branches/C.3-bier ........ Merged revisions 374802 from http://svn.asterisk.org/svn/asterisk/branches/1.8 git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/1.8.11@374806 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -3801,6 +3801,7 @@ static struct callattempt *wait_for_answer(struct queue_ent *qe, struct callatte
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if ((f->frametype == AST_FRAME_DTMF) && caller_disconnect && (f->subclass.integer == '*')) {
|
||||
ast_verb(3, "User hit %c to disconnect call.\n", f->subclass.integer);
|
||||
*to = 0;
|
||||
@@ -3814,6 +3815,38 @@ static struct callattempt *wait_for_answer(struct queue_ent *qe, struct callatte
|
||||
ast_frfree(f);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Send the frame from the in channel to all outgoing channels. */
|
||||
for (o = start; o; o = o->call_next) {
|
||||
if (!o->stillgoing || !o->chan) {
|
||||
/* This outgoing channel has died so don't send the frame to it. */
|
||||
continue;
|
||||
}
|
||||
switch (f->frametype) {
|
||||
case AST_FRAME_CONTROL:
|
||||
switch (f->subclass.integer) {
|
||||
case AST_CONTROL_CONNECTED_LINE:
|
||||
if (ast_channel_connected_line_macro(in, o->chan, f, 0, 1)) {
|
||||
ast_indicate_data(o->chan, f->subclass.integer, f->data.ptr, f->datalen);
|
||||
}
|
||||
break;
|
||||
case AST_CONTROL_REDIRECTING:
|
||||
if (ast_channel_redirecting_macro(in, o->chan, f, 0, 1)) {
|
||||
ast_indicate_data(o->chan, f->subclass.integer, f->data.ptr, f->datalen);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
/* We are not going to do anything with this frame. */
|
||||
goto skip_frame;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
/* We are not going to do anything with this frame. */
|
||||
goto skip_frame;
|
||||
}
|
||||
}
|
||||
skip_frame:;
|
||||
|
||||
ast_frfree(f);
|
||||
}
|
||||
if (!*to) {
|
||||
|
||||
Reference in New Issue
Block a user