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
This commit is contained in:
Richard Mudgett
2017-05-11 18:49:09 -05:00
parent a95584d079
commit 716abaf33d

View File

@@ -875,6 +875,7 @@ static void update_ice(const struct ast_sdp_state *state, struct ast_rtp_instanc
{ {
struct ast_rtp_engine_ice *ice; struct ast_rtp_engine_ice *ice;
const struct ast_sdp_a_line *attr; const struct ast_sdp_a_line *attr;
const struct ast_sdp_a_line *attr_rtcp_mux;
unsigned int attr_i; unsigned int attr_i;
/* If ICE support is not enabled or available exit early */ /* 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; 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); ice->ice_lite(rtp);
} }
attr_rtcp_mux = ast_sdp_m_find_attribute(remote_m_line, "rtcp-mux", -1);
/* Find all of the candidates */ /* Find all of the candidates */
for (attr_i = 0; attr_i < ast_sdp_m_get_a_count(remote_m_line); ++attr_i) { for (attr_i = 0; attr_i < ast_sdp_m_get_a_count(remote_m_line); ++attr_i) {
char foundation[32]; char foundation[32];
@@ -931,9 +934,9 @@ static void update_ice(const struct ast_sdp_state *state, struct ast_rtp_instanc
continue; continue;
} }
if (ast_sdp_options_get_rtcp_mux(options) if (candidate.id > 1
&& ast_sdp_m_find_attribute(remote_m_line, "rtcp-mux", -1) && attr_rtcp_mux
&& candidate.id > 1) { && ast_sdp_options_get_rtcp_mux(options)) {
/* Remote side may have offered RTP and RTCP candidates. However, if we're using RTCP MUX, /* Remote side may have offered RTP and RTCP candidates. However, if we're using RTCP MUX,
* then we should ignore RTCP candidates. * then we should ignore RTCP candidates.
*/ */