diff options
author | Benny Prijono <bennylp@teluu.com> | 2013-06-24 09:53:16 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2013-06-24 09:53:16 +0000 |
commit | ac1d9cc6e18880bf3a5d142f20d53e4382c0e611 (patch) | |
tree | 38c2a40619cdd8e3fc06bddf6c95689b7b5508e5 /pjsip/src/pjsua-lib/pjsua_media.c | |
parent | 0a2c5325be043699024c91a0268c22050975f5ff (diff) |
Closed #1668: Option to use the IP address found in REGISTER response in the SDP
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@4543 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip/src/pjsua-lib/pjsua_media.c')
-rw-r--r-- | pjsip/src/pjsua-lib/pjsua_media.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/pjsip/src/pjsua-lib/pjsua_media.c b/pjsip/src/pjsua-lib/pjsua_media.c index 22da8ec7..2f58e71f 100644 --- a/pjsip/src/pjsua-lib/pjsua_media.c +++ b/pjsip/src/pjsua-lib/pjsua_media.c @@ -239,12 +239,14 @@ static pj_status_t create_rtp_rtcp_sock(pjsua_call_media *call_med, pj_sockaddr mapped_addr[2]; pj_status_t status = PJ_SUCCESS; char addr_buf[PJ_INET6_ADDRSTRLEN+10]; + pjsua_acc *acc; pj_sock_t sock[2]; - pjsua_acc *acc = &pjsua_var.acc[call_med->call->acc_id]; use_ipv6 = (acc->cfg.ipv6_media_use != PJSUA_IPV6_DISABLED); af = use_ipv6 ? pj_AF_INET6() : pj_AF_INET(); + acc = &pjsua_var.acc[call_med->call->acc_id]; + /* Make sure STUN server resolution has completed */ if (!use_ipv6 && pjsua_sip_acc_is_using_stun(call_med->call->acc_id)) { status = resolve_stun_server(PJ_TRUE); @@ -423,6 +425,19 @@ static pj_status_t create_rtp_rtcp_sock(pjsua_call_media *call_med, break; } else { + if (acc->cfg.allow_sdp_nat_rewrite && acc->reg_mapped_addr.slen) { + pj_status_t status; + + /* Take the address from mapped addr as seen by registrar */ + status = pj_sockaddr_set_str_addr(af, &bound_addr, + &acc->reg_mapped_addr); + if (status != PJ_SUCCESS) { + /* just leave bound_addr with whatever it was + pj_bzero(pj_sockaddr_get_addr(&bound_addr), + pj_sockaddr_get_addr_len(&bound_addr)); + */ + } + } if (!pj_sockaddr_has_addr(&bound_addr)) { pj_sockaddr addr; |