diff options
author | Nanang Izzuddin <nanang@teluu.com> | 2015-06-11 12:12:21 +0000 |
---|---|---|
committer | Nanang Izzuddin <nanang@teluu.com> | 2015-06-11 12:12:21 +0000 |
commit | d67c451551a7ca11096f3262befd089d0ebeb062 (patch) | |
tree | 347022bc05308e94bf0b05b8d512da822a88f533 /pjsip | |
parent | c41c5316a7be9c2c674f82b543f2e5326e62316f (diff) |
Misc (re #1843): Updated SIP transport TCP & TLS to get server local address info using getsockname() instead of using the listener address.
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@5105 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip')
-rw-r--r-- | pjsip/src/pjsip/sip_transport_tcp.c | 13 | ||||
-rw-r--r-- | pjsip/src/pjsip/sip_transport_tls.c | 3 |
2 files changed, 11 insertions, 5 deletions
diff --git a/pjsip/src/pjsip/sip_transport_tcp.c b/pjsip/src/pjsip/sip_transport_tcp.c index 0dc0bacb..096d813f 100644 --- a/pjsip/src/pjsip/sip_transport_tcp.c +++ b/pjsip/src/pjsip/sip_transport_tcp.c @@ -1086,7 +1086,8 @@ static pj_bool_t on_accept_complete(pj_activesock_t *asock, struct tcp_transport *tcp; char addr[PJ_INET6_ADDRSTRLEN+10]; pjsip_tp_state_callback state_cb; - pj_sockaddr tmp_src_addr; + pj_sockaddr tmp_src_addr, tmp_dst_addr; + int addr_len; pj_status_t status; PJ_UNUSED_ARG(src_addr_len); @@ -1123,13 +1124,19 @@ static pj_bool_t on_accept_complete(pj_activesock_t *asock, pj_bzero(&tmp_src_addr, sizeof(tmp_src_addr)); pj_sockaddr_cp(&tmp_src_addr, src_addr); + /* Get local address */ + addr_len = sizeof(tmp_dst_addr); + status = pj_sock_getsockname(sock, &tmp_dst_addr, &addr_len); + if (status != PJ_SUCCESS) { + pj_sockaddr_cp(&tmp_dst_addr, &listener->factory.local_addr); + } + /* * Incoming connection! * Create TCP transport for the new socket. */ status = tcp_create( listener, NULL, sock, PJ_TRUE, - &listener->factory.local_addr, - &tmp_src_addr, &tcp); + &tmp_dst_addr, &tmp_src_addr, &tcp); if (status == PJ_SUCCESS) { status = tcp_start_read(tcp); if (status != PJ_SUCCESS) { diff --git a/pjsip/src/pjsip/sip_transport_tls.c b/pjsip/src/pjsip/sip_transport_tls.c index 7fec591e..6302a4d4 100644 --- a/pjsip/src/pjsip/sip_transport_tls.c +++ b/pjsip/src/pjsip/sip_transport_tls.c @@ -1209,8 +1209,7 @@ static pj_bool_t on_accept_complete(pj_ssl_sock_t *ssock, * Create TLS transport for the new socket. */ status = tls_create( listener, NULL, new_ssock, PJ_TRUE, - &listener->factory.local_addr, - &tmp_src_addr, NULL, &tls); + &ssl_info.local_addr, &tmp_src_addr, NULL, &tls); if (status != PJ_SUCCESS) return PJ_TRUE; |