Ignore:
Timestamp:
Nov 14, 2016 6:13:01 AM (4 years ago)
Author:
nanang
Message:

Re #1971: Request IPv4 relay address to an IPv6 TURN server for IPv6-IPv4 connectivity.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjsip/src/pjsua-lib/pjsua_media.c

    r5462 r5481  
    927927        ice_cfg.turn_tp_cnt = 1; 
    928928        pj_ice_strans_turn_cfg_default(&ice_cfg.turn_tp[0]); 
    929         if (use_ipv6 && PJ_ICE_MAX_TURN >= 2) { 
    930             ice_cfg.turn_tp_cnt = 2; 
     929        if (use_ipv6 && PJ_ICE_MAX_TURN >= 3) { 
     930            ice_cfg.turn_tp_cnt = 3; 
     931 
    931932            pj_ice_strans_turn_cfg_default(&ice_cfg.turn_tp[1]); 
    932933            ice_cfg.turn_tp[1].af = pj_AF_INET6(); 
     934 
     935            /* Additional candidate: IPv4 relay via IPv6 TURN server */ 
     936            pj_ice_strans_turn_cfg_default(&ice_cfg.turn_tp[2]); 
     937            ice_cfg.turn_tp[2].af = pj_AF_INET6(); 
     938            ice_cfg.turn_tp[2].alloc_param.af = pj_AF_INET(); 
    933939        } 
    934940 
     
    957963                      &acc_cfg->turn_cfg.turn_auth_cred, 
    958964                      sizeof(ice_cfg.turn_tp[1].auth_cred)); 
     965 
     966            ice_cfg.turn_tp[2].server    = ice_cfg.turn_tp[0].server; 
     967            ice_cfg.turn_tp[2].port      = ice_cfg.turn_tp[0].port; 
     968            ice_cfg.turn_tp[2].conn_type = ice_cfg.turn_tp[0].conn_type; 
     969            pj_memcpy(&ice_cfg.turn_tp[2].auth_cred,  
     970                      &acc_cfg->turn_cfg.turn_auth_cred, 
     971                      sizeof(ice_cfg.turn_tp[2].auth_cred)); 
    959972        } 
    960973 
     
    967980            pj_memcpy(&ice_cfg.turn_tp[1].cfg.qos_params, &cfg->qos_params, 
    968981                      sizeof(cfg->qos_params)); 
     982 
     983            ice_cfg.turn_tp[2].cfg.qos_type = cfg->qos_type; 
     984            pj_memcpy(&ice_cfg.turn_tp[2].cfg.qos_params, &cfg->qos_params, 
     985                      sizeof(cfg->qos_params)); 
    969986        } 
    970987 
     
    9841001            ice_cfg.turn_tp[1].cfg.port_range = 
    9851002                            ice_cfg.turn_tp[0].cfg.port_range; 
     1003 
     1004            pj_sockaddr_init(pj_AF_INET6(), 
     1005                             &ice_cfg.turn_tp[2].cfg.bound_addr, 
     1006                             &IN6_ADDR_ANY, (pj_uint16_t)cfg->port); 
     1007            ice_cfg.turn_tp[2].cfg.port_range = 
     1008                            ice_cfg.turn_tp[0].cfg.port_range; 
    9861009        } 
    9871010 
    9881011        /* Configure max packet size */ 
    9891012        ice_cfg.turn_tp[0].cfg.max_pkt_size = PJMEDIA_MAX_MRU; 
    990         if (use_ipv6 && ice_cfg.turn_tp_cnt > 1) 
     1013        if (use_ipv6 && ice_cfg.turn_tp_cnt > 1) { 
    9911014            ice_cfg.turn_tp[1].cfg.max_pkt_size = PJMEDIA_MAX_MRU; 
     1015            ice_cfg.turn_tp[2].cfg.max_pkt_size = PJMEDIA_MAX_MRU; 
     1016        } 
    9921017    } 
    9931018 
Note: See TracChangeset for help on using the changeset viewer.