diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index c14fd44d044b3f0113a6327e0b7651775479aff9..502ca60da8ea396b5a3e232a74c3dadda9e0b9e9 100755
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -7650,7 +7650,7 @@ restartsearch:
 		sip = iflist;
 		while(sip) {
 			ast_mutex_lock(&sip->lock);
-			if (sip->rtp && sip->lastrtprx && (sip->rtptimeout || sip->rtpholdtimeout) && !sip->redirip.sin_addr.s_addr) {
+			if (sip->rtp && sip->owner && (sip->owner->_state == AST_STATE_UP) && sip->lastrtprx && (sip->rtptimeout || sip->rtpholdtimeout) && !sip->redirip.sin_addr.s_addr) {
 				if (t > sip->lastrtprx + sip->rtptimeout) {
 					/* Might be a timeout now -- see if we're on hold */
 					struct sockaddr_in sin;