summaryrefslogtreecommitdiff
path: root/extra/serf/serf-ssl-allocator-v2.patch
diff options
context:
space:
mode:
Diffstat (limited to 'extra/serf/serf-ssl-allocator-v2.patch')
-rw-r--r--extra/serf/serf-ssl-allocator-v2.patch57
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;