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)
{