Merged revisions 374803 via svnmerge from

file:///srv/subversion/repos/asterisk/branches/10

................
  r374803 | rmudgett | 2012-10-10 15:55:44 -0500 (Wed, 10 Oct 2012) | 30 lines
  
  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/branches/10-digiumphones@374831 65c4cc65-6c06-0410-ace0-fbb531ad65f3
10-digiumphones
Automerge script 14 years ago
parent 4aa17120d3
commit 3b57018627

@ -3968,13 +3968,6 @@ static struct callattempt *wait_for_answer(struct queue_ent *qe, struct callatte
return NULL;
}
/*!
* \todo
* XXX Queue like Dial really should send any connected line
* updates (AST_CONTROL_CONNECTED_LINE) from the caller to each
* ringing queue member.
*/
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;
@ -3988,6 +3981,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) {

Loading…
Cancel
Save