diff --git a/channels/sig_pri.c b/channels/sig_pri.c
index ad72f699358f5a3fd63b0d515d7862cafe4401f9..9440df6488998f8b28b0f8ab0943ede427422a62 100644
--- a/channels/sig_pri.c
+++ b/channels/sig_pri.c
@@ -6247,13 +6247,19 @@ static void *pri_dchannel(void *vpri)
 					pri->pvts[chanpos]->call_level = SIG_PRI_CALL_LEVEL_ALERTING;
 				}
 
-				if (
+				if (!pri->pvts[chanpos]->progress
+					&& !pri->pvts[chanpos]->no_b_channel
 #ifdef PRI_PROGRESS_MASK
-					e->ringing.progressmask & PRI_PROG_INBAND_AVAILABLE
+					&& (e->ringing.progressmask
+						& (PRI_PROG_CALL_NOT_E2E_ISDN | PRI_PROG_INBAND_AVAILABLE))
 #else
-					e->ringing.progress == 8
+					&& e->ringing.progress == 8
 #endif
 					) {
+					/* Bring voice path up */
+					pri_queue_control(pri, chanpos, AST_CONTROL_PROGRESS);
+					pri->pvts[chanpos]->progress = 1;
+					sig_pri_set_dialing(pri->pvts[chanpos], 0);
 					sig_pri_open_media(pri->pvts[chanpos]);
 				}
 
@@ -6305,7 +6311,8 @@ static void *pri_dchannel(void *vpri)
 				if (!pri->pvts[chanpos]->progress
 					&& !pri->pvts[chanpos]->no_b_channel
 #ifdef PRI_PROGRESS_MASK
-					&& (e->proceeding.progressmask & PRI_PROG_INBAND_AVAILABLE)
+					&& (e->proceeding.progressmask
+						& (PRI_PROG_CALL_NOT_E2E_ISDN | PRI_PROG_INBAND_AVAILABLE))
 #else
 					&& e->proceeding.progress == 8
 #endif
@@ -6347,7 +6354,8 @@ static void *pri_dchannel(void *vpri)
 				if (!pri->pvts[chanpos]->progress
 					&& !pri->pvts[chanpos]->no_b_channel
 #ifdef PRI_PROGRESS_MASK
-					&& (e->proceeding.progressmask & PRI_PROG_INBAND_AVAILABLE)
+					&& (e->proceeding.progressmask
+						& (PRI_PROG_CALL_NOT_E2E_ISDN | PRI_PROG_INBAND_AVAILABLE))
 #else
 					&& e->proceeding.progress == 8
 #endif