]> granicus.if.org Git - apache/commitdiff
Fix winnt bucket_alloc to borrow memory from the transaction
authorWilliam A. Rowe Jr <wrowe@apache.org>
Sat, 29 Dec 2007 07:54:55 +0000 (07:54 +0000)
committerWilliam A. Rowe Jr <wrowe@apache.org>
Sat, 29 Dec 2007 07:54:55 +0000 (07:54 +0000)
pool, instead of exhausting pchild memory over a number of
connections.

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

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@607393 13f79535-47bb-0310-9956-ffa450edef68

server/mpm/winnt/child.c

index b8e4c27e4186544e3e946c787265b68aee4b45dd..7627a013309428a472edb242aec15dd609c54810 100644 (file)
@@ -84,6 +84,7 @@ 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);
@@ -187,7 +188,7 @@ PCOMP_CONTEXT mpm_get_completion_context(void)
                 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_inc32(&num_completion_contexts);
 
                 apr_thread_mutex_unlock(child_lock);
@@ -449,7 +450,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);
     }