diff options
Diffstat (limited to 'third-party/pjproject/patches/0001-2.4.5-fix-for-tls-async-ops.patch')
-rw-r--r-- | third-party/pjproject/patches/0001-2.4.5-fix-for-tls-async-ops.patch | 224 |
1 files changed, 0 insertions, 224 deletions
diff --git a/third-party/pjproject/patches/0001-2.4.5-fix-for-tls-async-ops.patch b/third-party/pjproject/patches/0001-2.4.5-fix-for-tls-async-ops.patch deleted file mode 100644 index 33fc8ea4e..000000000 --- a/third-party/pjproject/patches/0001-2.4.5-fix-for-tls-async-ops.patch +++ /dev/null @@ -1,224 +0,0 @@ -diff --git a/pjlib/include/pj/ssl_sock.h b/pjlib/include/pj/ssl_sock.h -index 1682bda..a69af32 100644 ---- a/pjlib/include/pj/ssl_sock.h -+++ b/pjlib/include/pj/ssl_sock.h -@@ -864,6 +864,18 @@ PJ_DECL(void) pj_ssl_sock_param_default(pj_ssl_sock_param *param); - - - /** -+ * Duplicate pj_ssl_sock_param. -+ * -+ * @param pool Pool to allocate memory. -+ * @param dst Destination parameter. -+ * @param src Source parameter. -+ */ -+PJ_DECL(void) pj_ssl_sock_param_copy(pj_pool_t *pool, -+ pj_ssl_sock_param *dst, -+ const pj_ssl_sock_param *src); -+ -+ -+/** - * Create secure socket instance. - * - * @param pool The pool for allocating secure socket instance. -@@ -1115,6 +1127,30 @@ PJ_DECL(pj_status_t) pj_ssl_sock_start_accept(pj_ssl_sock_t *ssock, - - - /** -+ * Same as #pj_ssl_sock_start_accept(), but application can provide -+ * a secure socket parameter, which will be used to create a new secure -+ * socket reported in \a on_accept_complete() callback when there is -+ * an incoming connection. -+ * -+ * @param ssock The secure socket. -+ * @param pool Pool used to allocate some internal data for the -+ * operation. -+ * @param localaddr Local address to bind on. -+ * @param addr_len Length of buffer containing local address. -+ * @param newsock_param Secure socket parameter for new accepted sockets. -+ * -+ * @return PJ_SUCCESS if the operation has been successful, -+ * or the appropriate error code on failure. -+ */ -+PJ_DECL(pj_status_t) -+pj_ssl_sock_start_accept2(pj_ssl_sock_t *ssock, -+ pj_pool_t *pool, -+ const pj_sockaddr_t *local_addr, -+ int addr_len, -+ const pj_ssl_sock_param *newsock_param); -+ -+ -+/** - * Starts asynchronous socket connect() operation and SSL/TLS handshaking - * for this socket. Once the connection is done (either successfully or not), - * the \a on_connect_complete() callback will be called. -diff --git a/pjlib/src/pj/ssl_sock_common.c b/pjlib/src/pj/ssl_sock_common.c -index 913efee..717ab1d 100644 ---- a/pjlib/src/pj/ssl_sock_common.c -+++ b/pjlib/src/pj/ssl_sock_common.c -@@ -19,6 +19,7 @@ - #include <pj/ssl_sock.h> - #include <pj/assert.h> - #include <pj/errno.h> -+#include <pj/pool.h> - #include <pj/string.h> - - /* -@@ -48,6 +49,31 @@ PJ_DEF(void) pj_ssl_sock_param_default(pj_ssl_sock_param *param) - } - - -+/* -+ * Duplicate SSL socket parameter. -+ */ -+PJ_DEF(void) pj_ssl_sock_param_copy( pj_pool_t *pool, -+ pj_ssl_sock_param *dst, -+ const pj_ssl_sock_param *src) -+{ -+ /* Init secure socket param */ -+ pj_memcpy(dst, src, sizeof(*dst)); -+ if (src->ciphers_num > 0) { -+ unsigned i; -+ dst->ciphers = (pj_ssl_cipher*) -+ pj_pool_calloc(pool, src->ciphers_num, -+ sizeof(pj_ssl_cipher)); -+ for (i = 0; i < src->ciphers_num; ++i) -+ dst->ciphers[i] = src->ciphers[i]; -+ } -+ -+ if (src->server_name.slen) { -+ /* Server name must be null-terminated */ -+ pj_strdup_with_null(pool, &dst->server_name, &src->server_name); -+ } -+} -+ -+ - PJ_DEF(pj_status_t) pj_ssl_cert_get_verify_status_strings( - pj_uint32_t verify_status, - const char *error_strings[], -diff --git a/pjlib/src/pj/ssl_sock_ossl.c b/pjlib/src/pj/ssl_sock_ossl.c -index 40a5a1e..6a701b7 100644 ---- a/pjlib/src/pj/ssl_sock_ossl.c -+++ b/pjlib/src/pj/ssl_sock_ossl.c -@@ -141,6 +141,7 @@ struct pj_ssl_sock_t - pj_pool_t *pool; - pj_ssl_sock_t *parent; - pj_ssl_sock_param param; -+ pj_ssl_sock_param newsock_param; - pj_ssl_cert_t *cert; - - pj_ssl_cert_info local_cert_info; -@@ -1757,11 +1758,9 @@ static pj_bool_t asock_on_accept_complete (pj_activesock_t *asock, - unsigned i; - pj_status_t status; - -- PJ_UNUSED_ARG(src_addr_len); -- - /* Create new SSL socket instance */ -- status = pj_ssl_sock_create(ssock_parent->pool, &ssock_parent->param, -- &ssock); -+ status = pj_ssl_sock_create(ssock_parent->pool, -+ &ssock_parent->newsock_param, &ssock); - if (status != PJ_SUCCESS) - goto on_return; - -@@ -2183,20 +2182,8 @@ PJ_DEF(pj_status_t) pj_ssl_sock_create (pj_pool_t *pool, - return status; - - /* Init secure socket param */ -- ssock->param = *param; -+ pj_ssl_sock_param_copy(pool, &ssock->param, param); - ssock->param.read_buffer_size = ((ssock->param.read_buffer_size+7)>>3)<<3; -- if (param->ciphers_num > 0) { -- unsigned i; -- ssock->param.ciphers = (pj_ssl_cipher*) -- pj_pool_calloc(pool, param->ciphers_num, -- sizeof(pj_ssl_cipher)); -- for (i = 0; i < param->ciphers_num; ++i) -- ssock->param.ciphers[i] = param->ciphers[i]; -- } -- -- /* Server name must be null-terminated */ -- pj_strdup_with_null(pool, &ssock->param.server_name, -- ¶m->server_name); - - /* Finally */ - *p_ssock = ssock; -@@ -2617,12 +2604,36 @@ PJ_DEF(pj_status_t) pj_ssl_sock_start_accept (pj_ssl_sock_t *ssock, - const pj_sockaddr_t *localaddr, - int addr_len) - { -+ return pj_ssl_sock_start_accept2(ssock, pool, localaddr, addr_len, -+ &ssock->param); -+} -+ -+ -+/** -+ * Same as #pj_ssl_sock_start_accept(), but application provides parameter -+ * for new accepted secure sockets. -+ */ -+PJ_DEF(pj_status_t) -+pj_ssl_sock_start_accept2(pj_ssl_sock_t *ssock, -+ pj_pool_t *pool, -+ const pj_sockaddr_t *localaddr, -+ int addr_len, -+ const pj_ssl_sock_param *newsock_param) -+{ - pj_activesock_cb asock_cb; - pj_activesock_cfg asock_cfg; - pj_status_t status; - - PJ_ASSERT_RETURN(ssock && pool && localaddr && addr_len, PJ_EINVAL); - -+ /* Verify new socket parameters */ -+ if (newsock_param->grp_lock != ssock->param.grp_lock || -+ newsock_param->sock_af != ssock->param.sock_af || -+ newsock_param->sock_type != ssock->param.sock_type) -+ { -+ return PJ_EINVAL; -+ } -+ - /* Create socket */ - status = pj_sock_socket(ssock->param.sock_af, ssock->param.sock_type, 0, - &ssock->sock); -@@ -2691,6 +2702,7 @@ PJ_DEF(pj_status_t) pj_ssl_sock_start_accept (pj_ssl_sock_t *ssock, - goto on_error; - - /* Start accepting */ -+ pj_ssl_sock_param_copy(pool, &ssock->newsock_param, newsock_param); - status = pj_activesock_start_accept(ssock->asock, pool); - if (status != PJ_SUCCESS) - goto on_error; -diff --git a/pjsip/src/pjsip/sip_transport_tls.c b/pjsip/src/pjsip/sip_transport_tls.c -index a9e95fb..91d99a7 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; -@@ -473,9 +473,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 v0.11.2 - |