|
|
|
@ -463,18 +463,6 @@ static void update_address_with_ice_candidate(struct ast_rtp *rtp, enum ast_rtp_
|
|
|
|
|
ast_sockaddr_set_port(cand_address, pj_sockaddr_get_port(&rtp->ice->comp[component - 1].valid_check->rcand->addr));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*! \brief Helper function which sets up channel binding on a TURN session if applicable */
|
|
|
|
|
static void turn_enable_bind_channel(struct ast_rtp *rtp, pj_turn_sock *turn, int component, int transport)
|
|
|
|
|
{
|
|
|
|
|
if (!rtp->ice || !turn || (component < 1) || !rtp->ice->comp[component - 1].valid_check ||
|
|
|
|
|
(rtp->ice->comp[component - 1].valid_check->lcand->transport_id != transport)) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pj_turn_sock_bind_channel(turn, &rtp->ice->comp[component - 1].valid_check->rcand->addr,
|
|
|
|
|
sizeof(rtp->ice->comp[component - 1].valid_check->rcand->addr));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*! \brief Destructor for locally created ICE candidates */
|
|
|
|
|
static void ast_rtp_ice_candidate_destroy(void *obj)
|
|
|
|
|
{
|
|
|
|
@ -600,6 +588,10 @@ static int ice_reset_session(struct ast_rtp_instance *instance)
|
|
|
|
|
pj_ice_sess_role role = rtp->ice->role;
|
|
|
|
|
int res;
|
|
|
|
|
|
|
|
|
|
if (!rtp->ice->is_nominating && !rtp->ice->is_complete) {
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ast_rtp_ice_stop(instance);
|
|
|
|
|
|
|
|
|
|
res = ice_create(instance, &rtp->ice_original_rtp_addr, rtp->ice_port, 1);
|
|
|
|
@ -1625,11 +1617,9 @@ static void ast_rtp_on_ice_complete(pj_ice_sess *ice, pj_status_t status)
|
|
|
|
|
|
|
|
|
|
update_address_with_ice_candidate(rtp, AST_RTP_ICE_COMPONENT_RTP, &remote_address);
|
|
|
|
|
ast_rtp_instance_set_remote_address(instance, &remote_address);
|
|
|
|
|
turn_enable_bind_channel(rtp, rtp->turn_rtp, AST_RTP_ICE_COMPONENT_RTP, TRANSPORT_TURN_RTP);
|
|
|
|
|
|
|
|
|
|
if (rtp->rtcp) {
|
|
|
|
|
update_address_with_ice_candidate(rtp, AST_RTP_ICE_COMPONENT_RTCP, &rtp->rtcp->them);
|
|
|
|
|
turn_enable_bind_channel(rtp, rtp->turn_rtcp, AST_RTP_ICE_COMPONENT_RTCP, TRANSPORT_TURN_RTCP);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|