From 716abaf33dc13c41d95629f853a0850c9ef3e8ce Mon Sep 17 00:00:00 2001
From: Richard Mudgett <rmudgett@digium.com>
Date: Thu, 11 May 2017 18:49:09 -0500
Subject: [PATCH] SDP: Search for the ice-lite attribute in the right place.

* Pulled finding the rtcp-mux attribute flag out of the ICE candidate for
loop.  Also ordered the RTCP ICE candidate skip test to fail earlier.

Change-Id: I8905d9c68563027a46cd3ae14dbcc27e9c814809
---
 main/sdp_state.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/main/sdp_state.c b/main/sdp_state.c
index f27da211bf..0f06bf9e30 100644
--- a/main/sdp_state.c
+++ b/main/sdp_state.c
@@ -875,6 +875,7 @@ static void update_ice(const struct ast_sdp_state *state, struct ast_rtp_instanc
 {
 	struct ast_rtp_engine_ice *ice;
 	const struct ast_sdp_a_line *attr;
+	const struct ast_sdp_a_line *attr_rtcp_mux;
 	unsigned int attr_i;
 
 	/* If ICE support is not enabled or available exit early */
@@ -902,10 +903,12 @@ static void update_ice(const struct ast_sdp_state *state, struct ast_rtp_instanc
 		return;
 	}
 
-	if (ast_sdp_m_find_attribute(remote_m_line, "ice-lite", -1)) {
+	if (ast_sdp_find_attribute(remote_sdp, "ice-lite", -1)) {
 		ice->ice_lite(rtp);
 	}
 
+	attr_rtcp_mux = ast_sdp_m_find_attribute(remote_m_line, "rtcp-mux", -1);
+
 	/* Find all of the candidates */
 	for (attr_i = 0; attr_i < ast_sdp_m_get_a_count(remote_m_line); ++attr_i) {
 		char foundation[32];
@@ -931,9 +934,9 @@ static void update_ice(const struct ast_sdp_state *state, struct ast_rtp_instanc
 			continue;
 		}
 
-		if (ast_sdp_options_get_rtcp_mux(options)
-			&& ast_sdp_m_find_attribute(remote_m_line, "rtcp-mux", -1)
-			&& candidate.id > 1) {
+		if (candidate.id > 1
+			&& attr_rtcp_mux
+			&& ast_sdp_options_get_rtcp_mux(options)) {
 			/* Remote side may have offered RTP and RTCP candidates. However, if we're using RTCP MUX,
 			 * then we should ignore RTCP candidates.
 			 */
-- 
GitLab