Ignore:
Timestamp:
Feb 7, 2013 9:35:34 AM (10 years ago)
Author:
nanang
Message:

Close #1602: configurable local port range for ICE transport.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjnath/src/pjnath/turn_sock.c

    r4207 r4343  
    3333}; 
    3434 
     35 
     36enum { MAX_BIND_RETRY = 100 }; 
     37 
     38 
    3539#define INIT    0x1FFFFFFF 
    3640 
     
    103107} 
    104108 
     109 
    105110/* 
    106111 * Create. 
     
    726731        pj_sock_t sock; 
    727732        pj_activesock_cb asock_cb; 
     733        pj_sockaddr bound_addr, *cfg_bind_addr; 
     734        pj_uint16_t max_bind_retry; 
    728735 
    729736        /* Close existing connection, if any. This happens when 
     
    751758        } 
    752759 
    753         /* Apply QoS, if specified */ 
     760        /* Bind socket */ 
     761        cfg_bind_addr = &turn_sock->setting.bound_addr; 
     762        max_bind_retry = MAX_BIND_RETRY; 
     763        if (turn_sock->setting.port_range && 
     764            turn_sock->setting.port_range < max_bind_retry) 
     765        { 
     766            max_bind_retry = turn_sock->setting.port_range; 
     767        } 
     768        pj_sockaddr_init(turn_sock->af, &bound_addr, NULL, 0); 
     769        if (cfg_bind_addr->addr.sa_family == pj_AF_INET() ||  
     770            cfg_bind_addr->addr.sa_family == pj_AF_INET6()) 
     771        { 
     772            pj_sockaddr_cp(&bound_addr, cfg_bind_addr); 
     773        } 
     774        status = pj_sock_bind_random(sock, &bound_addr, 
     775                                     turn_sock->setting.port_range, 
     776                                     max_bind_retry); 
     777        if (status != PJ_SUCCESS) { 
     778            pj_turn_sock_destroy(turn_sock); 
     779            return; 
     780        } 
     781 
     782        /* Apply QoS, if specified */ 
    754783        status = pj_sock_apply_qos2(sock, turn_sock->setting.qos_type, 
    755784                                    &turn_sock->setting.qos_params,  
Note: See TracChangeset for help on using the changeset viewer.