mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-30 02:26:23 +00:00
SDP: Set the remote c= line in RTP instance.
Change-Id: I23b646392082deab65bedeb19b12dcbcb9216d0c
This commit is contained in:
@@ -997,11 +997,32 @@ static void update_rtp_after_merge(const struct ast_sdp_state *state,
|
||||
const struct ast_sdp *remote_sdp,
|
||||
const struct ast_sdp_m_line *remote_m_line)
|
||||
{
|
||||
struct ast_sdp_c_line *c_line;
|
||||
struct ast_sockaddr *addrs;
|
||||
|
||||
if (!rtp) {
|
||||
/* This is a dummy stream */
|
||||
return;
|
||||
}
|
||||
|
||||
c_line = remote_m_line->c_line;
|
||||
if (!c_line) {
|
||||
c_line = remote_sdp->c_line;
|
||||
}
|
||||
/*
|
||||
* There must be a c= line somewhere but that would be an error by
|
||||
* the far end that should have been caught by a validation check
|
||||
* before we processed the SDP.
|
||||
*/
|
||||
ast_assert(c_line != NULL);
|
||||
|
||||
if (ast_sockaddr_resolve(&addrs, c_line->address, PARSE_PORT_FORBID, AST_AF_UNSPEC) > 0) {
|
||||
/* Apply connection information to the RTP instance */
|
||||
ast_sockaddr_set_port(addrs, remote_m_line->port);
|
||||
ast_rtp_instance_set_remote_address(rtp->instance, addrs);
|
||||
ast_free(addrs);
|
||||
}
|
||||
|
||||
if (ast_sdp_options_get_rtcp_mux(options)
|
||||
&& ast_sdp_m_find_attribute(remote_m_line, "rtcp-mux", -1)) {
|
||||
ast_rtp_instance_set_prop(rtp->instance, AST_RTP_PROPERTY_RTCP,
|
||||
@@ -1011,9 +1032,7 @@ static void update_rtp_after_merge(const struct ast_sdp_state *state,
|
||||
AST_RTP_INSTANCE_RTCP_STANDARD);
|
||||
}
|
||||
|
||||
if (ast_sdp_options_get_ice(options) == AST_SDP_ICE_ENABLED_STANDARD) {
|
||||
update_ice(state, rtp->instance, options, remote_sdp, remote_m_line);
|
||||
}
|
||||
update_ice(state, rtp->instance, options, remote_sdp, remote_m_line);
|
||||
}
|
||||
|
||||
/*!
|
||||
@@ -1066,12 +1085,19 @@ static void update_udptl_after_merge(const struct ast_sdp_state *state, struct s
|
||||
}
|
||||
}
|
||||
|
||||
c_line = remote_sdp->c_line;
|
||||
if (remote_m_line->c_line) {
|
||||
c_line = remote_m_line->c_line;
|
||||
c_line = remote_m_line->c_line;
|
||||
if (!c_line) {
|
||||
c_line = remote_sdp->c_line;
|
||||
}
|
||||
/*
|
||||
* There must be a c= line somewhere but that would be an error by
|
||||
* the far end that should have been caught by a validation check
|
||||
* before we processed the SDP.
|
||||
*/
|
||||
ast_assert(c_line != NULL);
|
||||
|
||||
if (ast_sockaddr_resolve(&addrs, c_line->address, PARSE_PORT_FORBID, AST_AF_UNSPEC) > 0) {
|
||||
/* Apply connection information to the UDPTL instance */
|
||||
ast_sockaddr_set_port(addrs, remote_m_line->port);
|
||||
ast_udptl_set_peer(udptl->instance, addrs);
|
||||
ast_free(addrs);
|
||||
|
Reference in New Issue
Block a user