You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by ma...@apache.org on 2008/05/20 16:12:48 UTC

svn commit: r658256 - /webservices/axis2/trunk/c/src/core/transport/http/server/apache2/mod_axis2.c

Author: manjula
Date: Tue May 20 07:12:47 2008
New Revision: 658256

URL: http://svn.apache.org/viewvc?rev=658256&view=rev
Log:
Fixing Axis2C-1079.

Modified:
    webservices/axis2/trunk/c/src/core/transport/http/server/apache2/mod_axis2.c

Modified: webservices/axis2/trunk/c/src/core/transport/http/server/apache2/mod_axis2.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/src/core/transport/http/server/apache2/mod_axis2.c?rev=658256&r1=658255&r2=658256&view=diff
==============================================================================
--- webservices/axis2/trunk/c/src/core/transport/http/server/apache2/mod_axis2.c (original)
+++ webservices/axis2/trunk/c/src/core/transport/http/server/apache2/mod_axis2.c Tue May 20 07:12:47 2008
@@ -101,6 +101,10 @@
     axutil_allocator_t * allocator,
     void *ptr);
 
+void AXIS2_CALL
+axis2_module_pool_allocator_destroy(
+    axutil_allocator_t *allocator);
+
 static void axis2_module_init(
     apr_pool_t * p,
     server_rec * svr_rec);
@@ -351,6 +355,9 @@
     allocator->local_pool = (void *) local_pool;
     allocator->current_pool = (void *) local_pool;
     allocator->global_pool = axutil_env->allocator->global_pool;
+    allocator->pool_allocator_destroy = axis2_module_pool_allocator_destroy;
+    allocator->pool_allocator = local_allocator;
+    allocator->ref_pool_allocator = 1; 
 
     error = axutil_error_create(allocator);
     thread_env = axutil_env_create_with_error_log_thread_pool(allocator,
@@ -365,8 +372,10 @@
         return HTTP_INTERNAL_SERVER_ERROR;
     }
 
-    apr_pool_destroy(local_pool);
-    apr_allocator_destroy(local_allocator);
+    axis2_module_pool_allocator_destroy(allocator);    
+
+    /*apr_pool_destroy(local_pool);
+    apr_allocator_destroy(local_allocator);*/
 
     return rv;
 }
@@ -433,6 +442,18 @@
 #endif
 }
 
+void AXIS2_CALL 
+axis2_module_pool_allocator_destroy(
+    axutil_allocator_t *allocator)
+{
+    if((--(allocator->ref_pool_allocator)) == 0)
+    {
+        apr_pool_destroy(allocator->local_pool);
+        apr_allocator_destroy(allocator->pool_allocator);
+    }
+}
+
+
 static int axis2_post_config(apr_pool_t *pconf, apr_pool_t *plog,
 								 apr_pool_t *ptemp, server_rec *svr_rec)
 {