[asterisk-commits] rmudgett: trunk r313383 - in /trunk: ./ apps/app_dial.c
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Mon Apr 11 18:20:44 CDT 2011
Author: rmudgett
Date: Mon Apr 11 18:20:39 2011
New Revision: 313383
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=313383
Log:
Merged revisions 313368-313369 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.8
........
r313368 | rmudgett | 2011-04-11 18:03:02 -0500 (Mon, 11 Apr 2011) | 2 lines
Backport a restructuring change from trunk to make the next change stand out.
........
r313369 | rmudgett | 2011-04-11 18:08:02 -0500 (Mon, 11 Apr 2011) | 13 lines
Frames from the inbound channel should go to all outbound channels in app_dial.c.
In app_dial.c:wait_for_answer() frames from the inbound channel should be
sent to all outbound channels instead of only if there is just one
outbound channel.
Control frames like AST_CONTROL_CONNECTED_LINE need to be passed to all of
the the outbound channels. This can happen if a blond transfer is done by
a remote switch on the inbound channel.
JIRA AST-443
JIRA SWP-2730
........
Modified:
trunk/ (props changed)
trunk/apps/app_dial.c
Propchange: trunk/
------------------------------------------------------------------------------
Binary property 'branch-1.8-merged' - no diff available.
Modified: trunk/apps/app_dial.c
URL: http://svnview.digium.com/svn/asterisk/trunk/apps/app_dial.c?view=diff&rev=313383&r1=313382&r2=313383
==============================================================================
--- trunk/apps/app_dial.c (original)
+++ trunk/apps/app_dial.c Mon Apr 11 18:20:39 2011
@@ -1418,12 +1418,17 @@
}
}
- if (single) {
+ /* Send the frame from the in channel to all outgoing channels. */
+ for (o = outgoing; o; o = o->next) {
+ if (!o->chan || !ast_test_flag64(o, DIAL_STILLGOING)) {
+ /* This outgoing channel has died so don't send the frame to it. */
+ continue;
+ }
switch (f->frametype) {
case AST_FRAME_HTML:
/* Forward HTML stuff */
- if (!ast_test_flag64(outgoing, DIAL_NOFORWARDHTML)
- && ast_channel_sendhtml(outgoing->chan, f->subclass.integer, f->data.ptr, f->datalen) == -1) {
+ if (!ast_test_flag64(o, DIAL_NOFORWARDHTML)
+ && ast_channel_sendhtml(o->chan, f->subclass.integer, f->data.ptr, f->datalen) == -1) {
ast_log(LOG_WARNING, "Unable to send URL\n");
}
break;
@@ -1432,7 +1437,7 @@
case AST_FRAME_TEXT:
case AST_FRAME_DTMF_BEGIN:
case AST_FRAME_DTMF_END:
- if (ast_write(outgoing->chan, f)) {
+ if (ast_write(o->chan, f)) {
ast_log(LOG_WARNING, "Unable to forward frametype: %d\n",
f->frametype);
}
@@ -1443,17 +1448,18 @@
case AST_CONTROL_UNHOLD:
case AST_CONTROL_VIDUPDATE:
case AST_CONTROL_SRCUPDATE:
- ast_verb(3, "%s requested special control %d, passing it to %s\n", in->name, f->subclass.integer, outgoing->chan->name);
- ast_indicate_data(outgoing->chan, f->subclass.integer, f->data.ptr, f->datalen);
+ ast_verb(3, "%s requested special control %d, passing it to %s\n",
+ in->name, f->subclass.integer, o->chan->name);
+ ast_indicate_data(o->chan, f->subclass.integer, f->data.ptr, f->datalen);
break;
case AST_CONTROL_CONNECTED_LINE:
- if (ast_channel_connected_line_macro(in, outgoing->chan, f, 0, 1)) {
- ast_indicate_data(outgoing->chan, f->subclass.integer, f->data.ptr, f->datalen);
+ 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, outgoing->chan, f, 0, 1)) {
- ast_indicate_data(outgoing->chan, f->subclass.integer, f->data.ptr, f->datalen);
+ 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:
More information about the asterisk-commits
mailing list