aboutsummaryrefslogtreecommitdiffstats
path: root/channels
diff options
context:
space:
mode:
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 ee71909ec..3d0eb4df0 100644
--- a/channels/chan_dahdi.c
+++ b/channels/chan_dahdi.c
@@ -8912,7 +8912,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
@@ -8920,6 +8921,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 */