diff --git a/channels/chan_dahdi.c b/channels/chan_dahdi.c
index 7d3795bc997aead242f4b620a68b63e8b8a06b7b..2b1ea8a193a2f47625839fc68f8a2834691b29de 100644
--- a/channels/chan_dahdi.c
+++ b/channels/chan_dahdi.c
@@ -6881,7 +6881,11 @@ static void *ss_thread(void *data)
 							ast_hangup(chan);
 							return NULL;
 						} 
-						f = ast_read(chan);
+						if (!(f = ast_read(chan))) {
+							ast_log(LOG_WARNING, "Hangup received waiting for ring. Exiting simple switch\n");
+							ast_hangup(chan);
+							return NULL;
+						}
 						ast_frfree(f);
 						if (chan->_state == AST_STATE_RING ||
 						    chan->_state == AST_STATE_RINGING)