summaryrefslogtreecommitdiff
path: root/pjmedia
diff options
context:
space:
mode:
authorNanang Izzuddin <nanang@teluu.com>2016-06-08 03:17:45 +0000
committerNanang Izzuddin <nanang@teluu.com>2016-06-08 03:17:45 +0000
commita44bcadfa1bc4c3a6067c5921d8eda10d7b24d10 (patch)
treebc9e0af584e8ee4f4a1aa8a16690bfdbe5d5fc43 /pjmedia
parentfd7ff41eec38181ba154286ca312a16b965aa07c (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.c21
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) {