diff options
author | Nanang Izzuddin <nanang@teluu.com> | 2016-06-08 03:17:45 +0000 |
---|---|---|
committer | Nanang Izzuddin <nanang@teluu.com> | 2016-06-08 03:17:45 +0000 |
commit | a44bcadfa1bc4c3a6067c5921d8eda10d7b24d10 (patch) | |
tree | bc9e0af584e8ee4f4a1aa8a16690bfdbe5d5fc43 /pjmedia | |
parent | fd7ff41eec38181ba154286ca312a16b965aa07c (diff) |
Re #422: Added IPv6 support to PJNATH, changes:
- Deprecated 'pj_ice_strans_cfg.af', if set, the value will be ignored, address family setting is now specified via transport setting, i.e: 'pj_ice_strans_cfg.stun_tp/turn_tp'.
- Deprecated 'pj_ice_strans_cfg.stun/turn', for backward compatibility, this field value will be checked if 'pj_ice_strans_cfg.stun_tp_cnt/turn_tp_cnt' is set to zero.
- Added 'pj_ice_strans_stun_cfg' & 'pj_ice_strans_stun_cfg' and the corresponding 'pj_ice_strans_stun/turn_cfg_default()'
- Added 'pj_ice_strans_cfg.stun_tp/turn_tp' as replacement of 'pj_ice_strans_cfg.stun/turn', it is now an array so app can have multiple STUN/TURN transports.
- Added macro PJ_ICE_MAX_STUN/TURN to specify maximum number of STUN/TURN transports in each ICE component in compile-time.
- Miscellaneous: fixed socket number limit in concurrency test in pjnath-test, updated pjsua_media.c to use new 'pj_ice_strans_cfg' setting.
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@5339 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjmedia')
-rw-r--r-- | pjmedia/src/pjmedia/transport_ice.c | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/pjmedia/src/pjmedia/transport_ice.c b/pjmedia/src/pjmedia/transport_ice.c index 0455627e..5876aea8 100644 --- a/pjmedia/src/pjmedia/transport_ice.c +++ b/pjmedia/src/pjmedia/transport_ice.c @@ -50,7 +50,6 @@ struct transport_ice { pjmedia_transport base; pj_pool_t *pool; - int af; unsigned options; /**< Transport options. */ unsigned comp_cnt; @@ -235,7 +234,6 @@ PJ_DEF(pj_status_t) pjmedia_ice_create3(pjmedia_endpt *endpt, pool = pjmedia_endpt_create_pool(endpt, name, 512, 512); tp_ice = PJ_POOL_ZALLOC_T(pool, struct transport_ice); tp_ice->pool = pool; - tp_ice->af = cfg->af; tp_ice->options = options; tp_ice->comp_cnt = comp_cnt; pj_ansi_strcpy(tp_ice->base.name, pool->obj_name); @@ -822,6 +820,7 @@ static pj_status_t verify_ice_sdp(struct transport_ice *tp_ice, pj_bool_t comp1_found=PJ_FALSE, comp2_found=PJ_FALSE, has_rtcp=PJ_FALSE; pj_sockaddr rem_conn_addr, rtcp_addr; unsigned i; + int rem_af = 0; pj_status_t status; rem_m = rem_sdp->media[media_index]; @@ -848,6 +847,7 @@ static pj_status_t verify_ice_sdp(struct transport_ice *tp_ice, return PJMEDIA_SDP_EMISSINGCONN; /* Verify address family matches */ + /* if ((tp_ice->af==pj_AF_INET() && pj_strcmp(&rem_conn->addr_type, &STR_IP4)!=0) || (tp_ice->af==pj_AF_INET6() && @@ -855,9 +855,18 @@ static pj_status_t verify_ice_sdp(struct transport_ice *tp_ice, { return PJMEDIA_SDP_ETPORTNOTEQUAL; } + */ + + /* Get remote address family */ + if (pj_strcmp(&rem_conn->addr_type, &STR_IP4)==0) + rem_af = pj_AF_INET(); + else if (pj_strcmp(&rem_conn->addr_type, &STR_IP6)==0) + rem_af = pj_AF_INET6(); + else + pj_assert(!"Unsupported address family"); /* Assign remote connection address */ - status = pj_sockaddr_init(tp_ice->af, &rem_conn_addr, &rem_conn->addr, + status = pj_sockaddr_init(rem_af, &rem_conn_addr, &rem_conn->addr, (pj_uint16_t)rem_m->desc.port); if (status != PJ_SUCCESS) return status; @@ -883,6 +892,7 @@ static pj_status_t verify_ice_sdp(struct transport_ice *tp_ice, if (rtcp_attr.addr.slen) { /* Verify address family matches */ + /* if ((tp_ice->af==pj_AF_INET() && pj_strcmp(&rtcp_attr.addr_type, &STR_IP4)!=0) || (tp_ice->af==pj_AF_INET6() && @@ -890,9 +900,10 @@ static pj_status_t verify_ice_sdp(struct transport_ice *tp_ice, { return PJMEDIA_SDP_ETPORTNOTEQUAL; } + */ /* Assign RTCP address */ - status = pj_sockaddr_init(tp_ice->af, &rtcp_addr, + status = pj_sockaddr_init(rem_af, &rtcp_addr, &rtcp_attr.addr, (pj_uint16_t)rtcp_attr.port); if (status != PJ_SUCCESS) { @@ -900,7 +911,7 @@ static pj_status_t verify_ice_sdp(struct transport_ice *tp_ice, } } else { /* Assign RTCP address */ - status = pj_sockaddr_init(tp_ice->af, &rtcp_addr, + status = pj_sockaddr_init(rem_af, &rtcp_addr, NULL, (pj_uint16_t)rtcp_attr.port); if (status != PJ_SUCCESS) { |