diff --git a/res/res_rtp_asterisk.c b/res/res_rtp_asterisk.c
index 14dbe24ee799b3af258bd180310c18c61f7ce633..b2f11dc37028418207df12dac0d374f831cde003 100644
--- a/res/res_rtp_asterisk.c
+++ b/res/res_rtp_asterisk.c
@@ -555,7 +555,17 @@ static void ast_rtp_ice_start(struct ast_rtp_instance *instance)
 		pj_timer_heap_poll(timerheap, NULL);
 		rtp->ice_started = 1;
 		rtp->strict_rtp_state = STRICT_RTP_OPEN;
+		return;
 	}
+
+	/* even though create check list failed don't stop ice as
+	   it might still work */
+	ast_debug(1, "Failed to create ICE session check list\n");
+	/* however we do need to reset remote candidates since
+	   this function may be re-entered */
+	ao2_ref(rtp->remote_candidates, -1);
+	rtp->remote_candidates = NULL;
+	rtp->ice->rcand_cnt = rtp->ice->clist.count = 0;
 }
 
 static void ast_rtp_ice_stop(struct ast_rtp_instance *instance)