]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
Use a global pool for global pool.
authorJean-Frederic Clere <jfclere@apache.org>
Thu, 3 Aug 2006 15:56:20 +0000 (15:56 +0000)
committerJean-Frederic Clere <jfclere@apache.org>
Thu, 3 Aug 2006 15:56:20 +0000 (15:56 +0000)
Remove the file containing the slotmems if its size has changed.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/httpd-proxy-scoreboard@428435 13f79535-47bb-0310-9956-ffa450edef68

modules/mem/mod_sharedmem.c
modules/mem/sharedmem_util.c

index a41d62656d7ebe357769025bfcd44bae6625178d..cb8f0c1fa72543805593313606a241a22369126d 100644 (file)
@@ -40,7 +40,16 @@ static int initialize_cleanup(apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp
 static int pre_config(apr_pool_t *p, apr_pool_t *plog,
                              apr_pool_t *ptemp)
 {
-    sharedmem_initglobalpool(p);
+    apr_pool_t *global_pool;
+    apr_status_t rv;
+
+    rv = apr_pool_create(&global_pool, NULL);
+    if (rv != APR_SUCCESS) {
+        ap_log_error(APLOG_MARK, APLOG_CRIT, rv, NULL,
+                     "Fatal error: unable to create global pool for shared slotmem");
+        return rv;
+    }
+    sharedmem_initglobalpool(global_pool);
     return OK;
 }
 
index 79adff7fa28490af1b90349be785d3933e6a4afe..b03cbf35eae6254853ef39538e69d389aebe8fcb 100644 (file)
@@ -110,6 +110,10 @@ void restore_slotmem(void *ptr, const char *name, apr_size_t item_size, int item
         if (apr_file_info_get(&fi, APR_FINFO_SIZE, fp) == APR_SUCCESS) {
             if (fi.size == nbytes) {
                 apr_file_read(fp, ptr, &nbytes);
+            } else {
+                apr_file_close(fp);
+                apr_file_remove(storename, pool);
+                return;
             }
         }
         apr_file_close(fp);