From 7c3bbef6996038e4351626b8bf2d6a415518e6e3 Mon Sep 17 00:00:00 2001 From: Liong Sauw Ming Date: Fri, 11 Dec 2015 04:59:56 +0000 Subject: 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 --- pjsip/src/pjsip/sip_transport_tls.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'pjsip/src') 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; -- cgit v1.2.3