aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--channels/chan_dahdi.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/channels/chan_dahdi.c b/channels/chan_dahdi.c
index fdf8cad3c..c23127e8c 100644
--- a/channels/chan_dahdi.c
+++ b/channels/chan_dahdi.c
@@ -5626,12 +5626,18 @@ 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 (!p->proceeding && p->sig==SIG_PRI && p->pri && p->pri->overlapdial &&
((!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_log(LOG_DEBUG,
+ "Absorbing inband %s DTMF digit: 0x%02X '%c' on %s\n",
+ f->frametype == AST_FRAME_DTMF_BEGIN ? "begin" : "end",
+ f->subclass, f->subclass, ast->name);
+
f->frametype = AST_FRAME_NULL;
f->subclass = 0;
}
@@ -10100,6 +10106,7 @@ static void *pri_dchannel(void *vpri)
ast_log(LOG_DEBUG, "Waiting on answer confirmation on channel %d!\n", pri->pvts[chanpos]->channel);
} else {
pri->pvts[chanpos]->dialing = 0;
+ pri->pvts[chanpos]->proceeding = 1;
pri->pvts[chanpos]->subs[SUB_REAL].needanswer =1;
/* Enable echo cancellation if it's not on already */
dahdi_enable_ec(pri->pvts[chanpos]);