You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by ji...@apache.org on 2010/09/27 19:10:18 UTC
svn commit: r1001819 - /httpd/httpd/trunk/modules/slotmem/mod_slotmem_shm.c
Author: jim
Date: Mon Sep 27 17:10:18 2010
New Revision: 1001819
URL: http://svn.apache.org/viewvc?rev=1001819&view=rev
Log:
No leakie
Modified:
httpd/httpd/trunk/modules/slotmem/mod_slotmem_shm.c
Modified: httpd/httpd/trunk/modules/slotmem/mod_slotmem_shm.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/slotmem/mod_slotmem_shm.c?rev=1001819&r1=1001818&r2=1001819&view=diff
==============================================================================
--- httpd/httpd/trunk/modules/slotmem/mod_slotmem_shm.c (original)
+++ httpd/httpd/trunk/modules/slotmem/mod_slotmem_shm.c Mon Sep 27 17:10:18 2010
@@ -16,6 +16,9 @@
/* Memory handler for a shared memory divided in slot.
* This one uses shared memory.
+ *
+ * Shared memory is cleaned-up for each restart, graceful or
+ * otherwise.
*/
#include "ap_slotmem.h"
@@ -184,17 +187,20 @@ static void restore_slotmem(void *ptr, c
static apr_status_t cleanup_slotmem(void *param)
{
ap_slotmem_instance_t **mem = param;
- apr_pool_t *pool = NULL;
if (*mem) {
ap_slotmem_instance_t *next = *mem;
- pool = next->gpool;
+ apr_pool_t *p = next->gpool;
while (next) {
store_slotmem(next);
apr_shm_destroy((apr_shm_t *)next->shm);
next = next->next;
}
- apr_pool_destroy(pool);
+ apr_pool_destroy(p);
+ } else {
+ /* If shared mem was never called, then just remove
+ * the global pool */
+ apr_pool_destroy(gpool);
}
return APR_SUCCESS;
}
@@ -593,14 +599,17 @@ static int post_config(apr_pool_t *p, ap
void *data;
const char *userdata_key = "slotmem_shm_post_config";
+ slotmem_shm_initialize_cleanup(p);
+
+ /* keep this around for possible future usage */
apr_pool_userdata_get(&data, userdata_key, s->process->pool);
if (!data) {
apr_pool_userdata_set((const void *)1, userdata_key,
apr_pool_cleanup_null, s->process->pool);
+ /* Do Stuff */
return OK;
}
- slotmem_shm_initialize_cleanup(p);
return OK;
}