diff options
author | Liong Sauw Ming <ming@teluu.com> | 2015-12-11 04:59:56 +0000 |
---|---|---|
committer | Liong Sauw Ming <ming@teluu.com> | 2015-12-11 04:59:56 +0000 |
commit | 7c3bbef6996038e4351626b8bf2d6a415518e6e3 (patch) | |
tree | 4dac4475da095fe1e6bc92e7b10bfde6818d8085 /pjsip/src | |
parent | 632d835979a5f40b61631ecb2bb10f4e50d5838a (diff) |
Fixed #1901: crash when async_cnt is set to a value greater than one for SIP TLS transport
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@5214 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip/src')
-rw-r--r-- | pjsip/src/pjsip/sip_transport_tls.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/pjsip/src/pjsip/sip_transport_tls.c b/pjsip/src/pjsip/sip_transport_tls.c index f43c32d6..617d7f53 100644 --- a/pjsip/src/pjsip/sip_transport_tls.c +++ b/pjsip/src/pjsip/sip_transport_tls.c @@ -314,7 +314,7 @@ PJ_DEF(pj_status_t) pjsip_tls_transport_start2( pjsip_endpoint *endpt, int af, sip_ssl_method; pj_uint32_t sip_ssl_proto; struct tls_listener *listener; - pj_ssl_sock_param ssock_param; + pj_ssl_sock_param ssock_param, newsock_param; pj_sockaddr *listener_addr; pj_bool_t has_listener; pj_status_t status; @@ -471,9 +471,14 @@ PJ_DEF(pj_status_t) pjsip_tls_transport_start2( pjsip_endpoint *endpt, */ has_listener = PJ_FALSE; - status = pj_ssl_sock_start_accept(listener->ssock, pool, + pj_memcpy(&newsock_param, &ssock_param, sizeof(newsock_param)); + newsock_param.async_cnt = 1; + newsock_param.cb.on_data_read = &on_data_read; + newsock_param.cb.on_data_sent = &on_data_sent; + status = pj_ssl_sock_start_accept2(listener->ssock, pool, (pj_sockaddr_t*)listener_addr, - pj_sockaddr_get_len((pj_sockaddr_t*)listener_addr)); + pj_sockaddr_get_len((pj_sockaddr_t*)listener_addr), + &newsock_param); if (status == PJ_SUCCESS || status == PJ_EPENDING) { pj_ssl_sock_info info; has_listener = PJ_TRUE; |