summaryrefslogtreecommitdiff
path: root/pjsip/src
diff options
context:
space:
mode:
authorNanang Izzuddin <nanang@teluu.com>2015-06-11 12:12:21 +0000
committerNanang Izzuddin <nanang@teluu.com>2015-06-11 12:12:21 +0000
commitd67c451551a7ca11096f3262befd089d0ebeb062 (patch)
tree347022bc05308e94bf0b05b8d512da822a88f533 /pjsip/src
parentc41c5316a7be9c2c674f82b543f2e5326e62316f (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/src')
-rw-r--r--pjsip/src/pjsip/sip_transport_tcp.c13
-rw-r--r--pjsip/src/pjsip/sip_transport_tls.c3
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;