summaryrefslogtreecommitdiff
path: root/pjsip
diff options
context:
space:
mode:
authorLiong Sauw Ming <ming@teluu.com>2015-12-11 04:59:56 +0000
committerLiong Sauw Ming <ming@teluu.com>2015-12-11 04:59:56 +0000
commit7c3bbef6996038e4351626b8bf2d6a415518e6e3 (patch)
tree4dac4475da095fe1e6bc92e7b10bfde6818d8085 /pjsip
parent632d835979a5f40b61631ecb2bb10f4e50d5838a (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')
-rw-r--r--pjsip/src/pjsip/sip_transport_tls.c11
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;