diff --git a/res/res_rtp_asterisk.c b/res/res_rtp_asterisk.c index 3b27650593..c05f699888 100644 --- a/res/res_rtp_asterisk.c +++ b/res/res_rtp_asterisk.c @@ -563,18 +563,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, enum ast_rtp_ice_component_type 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)); -} - static int ice_create(struct ast_rtp_instance *instance, struct ast_sockaddr *addr, int port, int replace); @@ -598,6 +586,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); @@ -1608,11 +1600,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); } }