diff --git a/channels/chan_zap.c b/channels/chan_zap.c
index 6a7eed2c9943f0f10d8a34a7eb32d010404d888a..5896d42e5e883f961850b4ccaae5010251d9e0ed 100755
--- a/channels/chan_zap.c
+++ b/channels/chan_zap.c
@@ -5991,6 +5991,9 @@ static void *pri_dchannel(void *vpri)
 			case PRI_EVENT_RING:
 				chan = e->ring.channel;
 				if (e->e==PRI_EVENT_RING) {
+					/* if no channel specified find one empty */
+					if (chan == -1)
+						chan = pri_find_empty_chan(pri);
 					if ((chan < 1) || (chan > pri->channels)) {
 						ast_log(LOG_WARNING, "Ring requested on odd channel number %d span %d\n", chan, pri->span);
 						chan = 0;