summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pjlib/src/pj/ssl_sock_ossl.c16
-rw-r--r--pjsip/src/pjsip/sip_transport_tls.c2
2 files changed, 10 insertions, 8 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;
diff --git a/pjsip/src/pjsip/sip_transport_tls.c b/pjsip/src/pjsip/sip_transport_tls.c
index 0c9ae7ae..a61cee29 100644
--- a/pjsip/src/pjsip/sip_transport_tls.c
+++ b/pjsip/src/pjsip/sip_transport_tls.c
@@ -884,7 +884,7 @@ static pj_status_t lis_create_transport(pjsip_tpfactory *factory,
(pj_sockaddr_t*)&tls->base.local_addr))
{
/* Update port only */
- pj_sockaddr_set_port((pj_sockaddr_t*)&tls->base.local_addr,
+ pj_sockaddr_set_port(&tls->base.local_addr,
new_port);
}