diff --git a/channels/chan_zap.c b/channels/chan_zap.c
index aae045549e8cd5fb40ed470103415c16154b4c94..7c2829b26cbdfacd0c6c60918c91b9bf3b481935 100755
--- a/channels/chan_zap.c
+++ b/channels/chan_zap.c
@@ -2205,6 +2205,8 @@ 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
@@ -7706,7 +7708,7 @@ static void *do_idle_thread(void *vchan)
 	return NULL;
 }
 
-#ifndef PRI_NEW_SET_API
+#ifndef PRI_RESTART
 #error "Upgrade your libpri"
 #endif
 static void zt_pri_message(struct pri *pri, char *s)