summaryrefslogtreecommitdiff
path: root/channels
diff options
context:
space:
mode:
authorRichard Mudgett <rmudgett@digium.com>2010-12-13 17:18:17 +0000
committerRichard Mudgett <rmudgett@digium.com>2010-12-13 17:18:17 +0000
commit7f29edd14064862d143f647ac9d1510e7a940723 (patch)
tree98d9596b0a7e7608b1a938f140b0b9d466c47774 /channels
parent78bd0de1a91c751c6b495b97994ffbc39173ca27 (diff)
Merged revisions 298195 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.8 ................ r298195 | rmudgett | 2010-12-13 11:11:43 -0600 (Mon, 13 Dec 2010) | 33 lines Merged revisions 298194 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ................ r298194 | rmudgett | 2010-12-13 11:04:41 -0600 (Mon, 13 Dec 2010) | 26 lines Merged revisions 298193 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r298193 | rmudgett | 2010-12-13 10:56:07 -0600 (Mon, 13 Dec 2010) | 19 lines Outgoing PRI/BRI calls cannot do DTMF triggered transfers. Outgoing PRI/BRI calls cannot do DTMF triggered transfers if a PROCEEDING message is not received. The debug output shows that the DTMF begin event is seen, but the DTMF end event is missing. When the DTMF begin happens, the call is muted so we now have one way audio (until a DTMF end event is somehow seen). * Made set the proceeding flag when the PRI_EVENT_ANSWER event is received. * Made absorb the DTMF begin and DTMF end events if we are overlap dialing and have not seen a PROCEEDING message. * Added a debug message when absorbing a DTMF event. JIRA SWP-2690 JIRA ABE-2697 ........ ................ ................ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@298201 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channels')
-rw-r--r--channels/chan_dahdi.c7
-rw-r--r--channels/sig_pri.c1
2 files changed, 7 insertions, 1 deletions
diff --git a/channels/chan_dahdi.c b/channels/chan_dahdi.c
index a0d0bbe11..1167a3633 100644
--- a/channels/chan_dahdi.c
+++ b/channels/chan_dahdi.c
@@ -8937,7 +8937,8 @@ static struct ast_frame *dahdi_read(struct ast_channel *ast)
a busy */
f = NULL;
}
- } else if (f->frametype == AST_FRAME_DTMF) {
+ } else if (f->frametype == AST_FRAME_DTMF_BEGIN
+ || f->frametype == AST_FRAME_DTMF_END) {
#ifdef HAVE_PRI
if (dahdi_sig_pri_lib_handles(p->sig)
&& !((struct sig_pri_chan *) p->sig_pvt)->proceeding
@@ -8945,6 +8946,10 @@ static struct ast_frame *dahdi_read(struct ast_channel *ast)
&& ((!p->outgoing && (p->pri->overlapdial & DAHDI_OVERLAPDIAL_INCOMING))
|| (p->outgoing && (p->pri->overlapdial & DAHDI_OVERLAPDIAL_OUTGOING)))) {
/* Don't accept in-band DTMF when in overlap dial mode */
+ ast_debug(1, "Absorbing inband %s DTMF digit: 0x%02X '%c' on %s\n",
+ f->frametype == AST_FRAME_DTMF_BEGIN ? "begin" : "end",
+ f->subclass.integer, f->subclass.integer, ast->name);
+
f->frametype = AST_FRAME_NULL;
f->subclass.integer = 0;
}
diff --git a/channels/sig_pri.c b/channels/sig_pri.c
index 61c075b9e..9b6d63a51 100644
--- a/channels/sig_pri.c
+++ b/channels/sig_pri.c
@@ -5259,6 +5259,7 @@ static void *pri_dchannel(void *vpri)
#endif /* defined(HAVE_PRI_CALL_WAITING) */
sig_pri_handle_subcmds(pri, chanpos, e->e, e->answer.channel,
e->answer.subcmds, e->answer.call);
+ pri->pvts[chanpos]->proceeding = 1;
sig_pri_open_media(pri->pvts[chanpos]);
pri_queue_control(pri, chanpos, AST_CONTROL_ANSWER);
/* Enable echo cancellation if it's not on already */