Commit fe131caf authored by William A. Rowe Jr's avatar William A. Rowe Jr
Browse files

Fix winnt bucket_alloc to borrow memory from the transaction

pool, instead of exhausting pchild memory over a number of
connections.

PR: 11427
Submitted by: Alex Varju <alex varju.ca>
Backport: r607393

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.0.x@607395 13f79535-47bb-0310-9956-ffa450edef68
parent c80e1930
Loading
Loading
Loading
Loading
+3 −2
Changes for server/mpm/winnt/child.c: 3 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -80,6 +80,7 @@ AP_DECLARE(void) mpm_recycle_completion_context(PCOMP_CONTEXT context)
     */
    if (context) {
        apr_pool_clear(context->ptrans);
        context->ba = apr_bucket_alloc_create(context->ptrans);
        context->next = NULL;
        ResetEvent(context->Overlapped.hEvent);
        apr_thread_mutex_lock(qlock);
@@ -174,7 +175,7 @@ AP_DECLARE(PCOMP_CONTEXT) mpm_get_completion_context(void)
                apr_allocator_owner_set(allocator, context->ptrans);
                apr_pool_tag(context->ptrans, "transaction");
                context->accept_socket = INVALID_SOCKET;
                context->ba = apr_bucket_alloc_create(pchild);
                context->ba = apr_bucket_alloc_create(context->ptrans);
                apr_atomic_inc(&num_completion_contexts); 

                apr_thread_mutex_unlock(child_lock);
@@ -424,7 +425,7 @@ static PCOMP_CONTEXT win9x_get_connection(PCOMP_CONTEXT context)
        apr_pool_create_ex(&context->ptrans, pchild, NULL, allocator);
        apr_allocator_owner_set(allocator, context->ptrans);
        apr_pool_tag(context->ptrans, "transaction");
        context->ba = apr_bucket_alloc_create(pchild);
        context->ba = apr_bucket_alloc_create(context->ptrans);
        apr_thread_mutex_unlock(child_lock);
    }