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 */