diff --git a/channels/chan_zap.c b/channels/chan_zap.c
index 7c2829b26cbdfacd0c6c60918c91b9bf3b481935..44b3fe1e8c0a51d7929ca055b14875ccb780da84 100755
--- a/channels/chan_zap.c
+++ b/channels/chan_zap.c
@@ -2205,8 +2205,6 @@ int pri_find_dchan(struct zt_pri *pri)
 		ast_log(LOG_NOTICE, "Switching from from d-channel %d to channel %d!\n",
 			pri->dchannels[oldslot], pri->dchannels[newslot]);
 	pri->pri = pri->dchans[newslot];
-	if (!pri_is_up(pri) && !(pri->dchanavail[newslot] & DCHAN_NOTINALARM))
-		pri_restart(pri->dchans[newslot]);
 	return 0;
 }
 #endif
@@ -8067,7 +8065,7 @@ static void *pri_dchannel(void *vpri)
 						pri_find_dchan(pri);
 					} else if (x == ZT_EVENT_NOALARM) {
 						pri->dchanavail[which] |= DCHAN_NOTINALARM;
-						pri_find_dchan(pri);
+						pri_restart(pri->dchans[which]);
 					}
 				
 					if (option_debug)