diff options
author | Nanang Izzuddin <nanang@teluu.com> | 2009-11-20 07:48:41 +0000 |
---|---|---|
committer | Nanang Izzuddin <nanang@teluu.com> | 2009-11-20 07:48:41 +0000 |
commit | b8350d459e3d56e65ee9a1ea7fe3338ad51af476 (patch) | |
tree | 68138f6a00c120e4c55d951618efb9086d06485b /pjlib | |
parent | 573b4160ee033f8dee2c481c9dbe9b23fee9cae7 (diff) |
Ticket #957:
- Fixed compile error of incompatible param type (or bad type conversion) on Symbian 5th ed (and perhaps also on some GCC versions).
- Fixed on_connect_complete() to reset SSL sock state before callback when connection fails (OpenSSL impl).
- Fixed saving remote address before start connecting, so it won't miss remote address info when socket connection establishes immediately (OpenSSL impl).
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@3020 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjlib')
-rw-r--r-- | pjlib/src/pj/ssl_sock_ossl.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/pjlib/src/pj/ssl_sock_ossl.c b/pjlib/src/pj/ssl_sock_ossl.c index ae7549ab..3b0e86fe 100644 --- a/pjlib/src/pj/ssl_sock_ossl.c +++ b/pjlib/src/pj/ssl_sock_ossl.c @@ -767,16 +767,18 @@ static pj_bool_t on_handshake_complete(pj_ssl_sock_t *ssock, /* Connecting */ else { + /* On failure, reset SSL socket state first, as app may try to + * reconnect in the callback. + */ + if (status != PJ_SUCCESS) { + reset_ssl_sock_state(ssock); + } if (ssock->param.cb.on_connect_complete) { pj_bool_t ret; ret = (*ssock->param.cb.on_connect_complete)(ssock, status); if (ret == PJ_FALSE) return PJ_FALSE; } - if (status != PJ_SUCCESS) { - /* Reset SSL socket state */ - reset_ssl_sock_state(ssock); - } } return PJ_TRUE; @@ -2077,6 +2079,9 @@ PJ_DECL(pj_status_t) pj_ssl_sock_start_connect(pj_ssl_sock_t *ssock, if (status != PJ_SUCCESS) goto on_error; + /* Save remote address */ + pj_sockaddr_cp(&ssock->rem_addr, remaddr); + status = pj_activesock_start_connect(ssock->asock, pool, remaddr, addr_len); @@ -2097,9 +2102,6 @@ PJ_DECL(pj_status_t) pj_ssl_sock_start_connect(pj_ssl_sock_t *ssock, * once the socket is established. */ - /* Set remote address */ - pj_sockaddr_cp(&ssock->rem_addr, remaddr); - /* Update SSL state */ ssock->is_server = PJ_FALSE; |