diff options
author | Nanang Izzuddin <nanang@teluu.com> | 2008-10-21 17:38:42 +0000 |
---|---|---|
committer | Nanang Izzuddin <nanang@teluu.com> | 2008-10-21 17:38:42 +0000 |
commit | 60d3d9c798c7b645cbb7d94a2a679c20d0ea06b5 (patch) | |
tree | 541d8882f06382754bf67ea271462f54bbe27ede | |
parent | e95c38b410546ffd8e6139d961aa1ccaab38ac1e (diff) |
Ticket #662: Updated pjmedia transport ICE to handle missing IP address part in SDP a=rtcp attribute.
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@2355 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r-- | pjmedia/src/pjmedia/transport_ice.c | 39 |
1 files changed, 25 insertions, 14 deletions
diff --git a/pjmedia/src/pjmedia/transport_ice.c b/pjmedia/src/pjmedia/transport_ice.c index 1e61fd39..907259dd 100644 --- a/pjmedia/src/pjmedia/transport_ice.c +++ b/pjmedia/src/pjmedia/transport_ice.c @@ -805,21 +805,32 @@ static pj_status_t verify_ice_sdp(struct transport_ice *tp_ice, return status; } - /* 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() && - pj_strcmp(&rtcp_attr.addr_type, &STR_IP6)!=0)) - { - return PJMEDIA_SDP_ETPORTNOTEQUAL; - } + 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() && + pj_strcmp(&rtcp_attr.addr_type, &STR_IP6)!=0)) + { + return PJMEDIA_SDP_ETPORTNOTEQUAL; + } - /* Assign RTCP address */ - status = pj_sockaddr_init(tp_ice->af, &rtcp_addr, - &rtcp_attr.addr, - (pj_uint16_t)rtcp_attr.port); - if (status != PJ_SUCCESS) { - return PJMEDIA_SDP_EINRTCP; + /* Assign RTCP address */ + status = pj_sockaddr_init(tp_ice->af, &rtcp_addr, + &rtcp_attr.addr, + (pj_uint16_t)rtcp_attr.port); + if (status != PJ_SUCCESS) { + return PJMEDIA_SDP_EINRTCP; + } + } else { + /* Assign RTCP address */ + status = pj_sockaddr_init(tp_ice->af, &rtcp_addr, + NULL, + (pj_uint16_t)rtcp_attr.port); + if (status != PJ_SUCCESS) { + return PJMEDIA_SDP_EINRTCP; + } + pj_sockaddr_copy_addr(&rtcp_addr, &rem_conn_addr); } sdp_state->match_comp_cnt = 2; |