diff options
Diffstat (limited to 'extra/serf/serf-ssl-allocator-v2.patch')
-rw-r--r-- | extra/serf/serf-ssl-allocator-v2.patch | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/extra/serf/serf-ssl-allocator-v2.patch b/extra/serf/serf-ssl-allocator-v2.patch new file mode 100644 index 000000000..09ad42477 --- /dev/null +++ b/extra/serf/serf-ssl-allocator-v2.patch @@ -0,0 +1,57 @@ +Index: buckets/ssl_buckets.c +=================================================================== +--- buckets/ssl_buckets.c (revision 2130) ++++ buckets/ssl_buckets.c (working copy) +@@ -1192,21 +1192,16 @@ + context->server_cert_userdata = data; + } + +-static serf_ssl_context_t *ssl_init_context(void) ++static serf_ssl_context_t *ssl_init_context(serf_bucket_alloc_t *allocator) + { + serf_ssl_context_t *ssl_ctx; +- apr_pool_t *pool; +- serf_bucket_alloc_t *allocator; + + init_ssl_libraries(); + +- apr_pool_create(&pool, NULL); +- allocator = serf_bucket_allocator_create(pool, NULL, NULL); +- + ssl_ctx = serf_bucket_mem_alloc(allocator, sizeof(*ssl_ctx)); + + ssl_ctx->refcount = 0; +- ssl_ctx->pool = pool; ++ ssl_ctx->pool = serf_bucket_allocator_get_pool(allocator); + ssl_ctx->allocator = allocator; + + ssl_ctx->ctx = SSL_CTX_new(SSLv23_client_method()); +@@ -1263,8 +1258,6 @@ + static apr_status_t ssl_free_context( + serf_ssl_context_t *ssl_ctx) + { +- apr_pool_t *p; +- + /* If never had the pending buckets, don't try to free them. */ + if (ssl_ctx->decrypt.pending != NULL) { + serf_bucket_destroy(ssl_ctx->decrypt.pending); +@@ -1277,10 +1270,7 @@ + SSL_free(ssl_ctx->ssl); + SSL_CTX_free(ssl_ctx->ctx); + +- p = ssl_ctx->pool; +- + serf_bucket_mem_free(ssl_ctx->allocator, ssl_ctx); +- apr_pool_destroy(p); + + return APR_SUCCESS; + } +@@ -1294,7 +1284,7 @@ + + ctx = serf_bucket_mem_alloc(allocator, sizeof(*ctx)); + if (!ssl_ctx) { +- ctx->ssl_ctx = ssl_init_context(); ++ ctx->ssl_ctx = ssl_init_context(allocator); + } + else { + ctx->ssl_ctx = ssl_ctx; |