summaryrefslogtreecommitdiff
path: root/pjsip
diff options
context:
space:
mode:
authorNanang Izzuddin <nanang@teluu.com>2009-06-22 14:06:40 +0000
committerNanang Izzuddin <nanang@teluu.com>2009-06-22 14:06:40 +0000
commit5949095a757f1ee521cd158d917b51f5d758e94e (patch)
tree41f93b034c4dc60d4dc9331ded932a268cd3ebd9 /pjsip
parenta274aa80702d4523cc5d60fbcaa85b9b96439e68 (diff)
Ticket #758:
- fixed transport TCP to call on_connect_complete when connect() returns PJ_SUCCESS. - added option to enable transport TCP in symbian_ua. git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@2781 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip')
-rw-r--r--pjsip/src/pjsip/sip_transport_tcp.c40
1 files changed, 20 insertions, 20 deletions
diff --git a/pjsip/src/pjsip/sip_transport_tcp.c b/pjsip/src/pjsip/sip_transport_tcp.c
index a9b3bd27..1692459a 100644
--- a/pjsip/src/pjsip/sip_transport_tcp.c
+++ b/pjsip/src/pjsip/sip_transport_tcp.c
@@ -805,33 +805,33 @@ static pj_status_t lis_create_transport(pjsip_tpfactory *factory,
status = pj_activesock_start_connect(tcp->asock, tcp->base.pool, rem_addr,
sizeof(pj_sockaddr_in));
if (status == PJ_SUCCESS) {
- tcp->has_pending_connect = PJ_FALSE;
+ on_connect_complete(tcp->asock, PJ_SUCCESS);
} else if (status != PJ_EPENDING) {
tcp_destroy(&tcp->base, status);
return status;
}
- /* Update (again) local address, just in case local address currently
- * set is different now that asynchronous connect() is started.
- */
- addr_len = sizeof(pj_sockaddr_in);
- if (pj_sock_getsockname(sock, &local_addr, &addr_len)==PJ_SUCCESS) {
- pj_sockaddr_in *tp_addr = (pj_sockaddr_in*)&tcp->base.local_addr;
-
- /* Some systems (like old Win32 perhaps) may not set local address
- * properly before socket is fully connected.
+ if (tcp->has_pending_connect) {
+ /* Update (again) local address, just in case local address currently
+ * set is different now that asynchronous connect() is started.
*/
- if (tp_addr->sin_addr.s_addr != local_addr.sin_addr.s_addr &&
- local_addr.sin_addr.s_addr != 0)
- {
- tp_addr->sin_addr.s_addr = local_addr.sin_addr.s_addr;
- tp_addr->sin_port = local_addr.sin_port;
- sockaddr_to_host_port(tcp->base.pool, &tcp->base.local_name,
- &local_addr);
- }
- }
+ addr_len = sizeof(pj_sockaddr_in);
+ if (pj_sock_getsockname(sock, &local_addr, &addr_len)==PJ_SUCCESS) {
+ pj_sockaddr_in *tp_addr = (pj_sockaddr_in*)&tcp->base.local_addr;
- if (tcp->has_pending_connect) {
+ /* Some systems (like old Win32 perhaps) may not set local address
+ * properly before socket is fully connected.
+ */
+ if (tp_addr->sin_addr.s_addr != local_addr.sin_addr.s_addr &&
+ local_addr.sin_addr.s_addr != 0)
+ {
+ tp_addr->sin_addr.s_addr = local_addr.sin_addr.s_addr;
+ tp_addr->sin_port = local_addr.sin_port;
+ sockaddr_to_host_port(tcp->base.pool, &tcp->base.local_name,
+ &local_addr);
+ }
+ }
+
PJ_LOG(4,(tcp->base.obj_name,
"TCP transport %.*s:%d is connecting to %.*s:%d...",
(int)tcp->base.local_name.host.slen,