From 716abaf33dc13c41d95629f853a0850c9ef3e8ce Mon Sep 17 00:00:00 2001 From: Richard Mudgett 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. */