app_dial.c: Make 'A' option pass COLP updates.

While the 'A' option is playing the announcement file allow the caller and
peer to exchange COLP update frames.

ASTERISK-25423
Reported by: John Hardin

Change-Id: Iac6cf89b56d26452c6bb88e9363622bbf23895f9
changes/22/1322/1
Richard Mudgett 10 years ago
parent 680b76eb25
commit 1d394774b2

@ -2748,7 +2748,9 @@ static int dial_exec_full(struct ast_channel *chan, const char *data, struct ast
active_chan = ast_waitfor_n(chans, 2, &ms);
if (active_chan) {
struct ast_channel *other_chan;
struct ast_frame *fr = ast_read(active_chan);
if (!fr) {
ast_autoservice_chan_hangup_peer(chan, peer);
res = -1;
@ -2769,6 +2771,20 @@ static int dial_exec_full(struct ast_channel *chan, const char *data, struct ast
ast_autoservice_chan_hangup_peer(chan, peer);
res = -1;
goto done;
case AST_CONTROL_CONNECTED_LINE:
/* Pass COLP update to the other channel. */
if (active_chan == chan) {
other_chan = peer;
} else {
other_chan = chan;
}
if (ast_channel_connected_line_sub(active_chan, other_chan, fr, 1)
&& ast_channel_connected_line_macro(active_chan,
other_chan, fr, other_chan == chan, 1)) {
ast_indicate_data(other_chan, fr->subclass.integer,
fr->data.ptr, fr->datalen);
}
break;
default:
break;
}

Loading…
Cancel
Save