Author: file
Date: Wed Oct 15 20:24:12 2014
New Revision: 425644

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=425644
Log:
res_rtp_asterisk: Fix a bug where ICE state would get reset when it shouldn't.

In the case where the ICE negotiation had not yet started current state would
get wiped when it shouldn't.

This also removes channel binding as in practice this does not work well with
other implementations.

Modified:
    branches/11/res/res_rtp_asterisk.c

Modified: branches/11/res/res_rtp_asterisk.c
URL: 
http://svnview.digium.com/svn/asterisk/branches/11/res/res_rtp_asterisk.c?view=diff&rev=425644&r1=425643&r2=425644
==============================================================================
--- branches/11/res/res_rtp_asterisk.c (original)
+++ branches/11/res/res_rtp_asterisk.c Wed Oct 15 20:24:12 2014
@@ -563,18 +563,6 @@
        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);
 
@@ -597,6 +585,10 @@
        struct ast_rtp *rtp = ast_rtp_instance_get_data(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);
 
@@ -1608,11 +1600,9 @@
 
                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);
                }
        }
 


-- 
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --

svn-commits mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/svn-commits

Reply via email to