diff --git a/channels/chan_dahdi.c b/channels/chan_dahdi.c
index a0d0bbe11dd9c14ce8f4e543a2486c5f94c95cbb..1167a363325b1879197d0835f4a16e6d09535abe 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 61c075b9e32e8aa12b3f35644f56dc36db8dbf5d..9b6d63a5177371623cd5805b0eb84657573cc8fc 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 */