]> granicus.if.org Git - apache/commitdiff
* Remove temporary files if renaming fails, otherwise they may accumulate.
authorRuediger Pluem <rpluem@apache.org>
Sun, 28 May 2006 10:32:01 +0000 (10:32 +0000)
committerRuediger Pluem <rpluem@apache.org>
Sun, 28 May 2006 10:32:01 +0000 (10:32 +0000)
Submitted by: Davi Arnaut <davi haxent.com.br>
Reviewed by: rpluem

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

CHANGES
modules/cache/mod_disk_cache.c

diff --git a/CHANGES b/CHANGES
index 8086806bce4685dcac373fb554cec9047a4f39dd..d5b66a3b84c77fa623da5a6da84fc10297ffb7f4 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -2,6 +2,9 @@
 Changes with Apache 2.3.0
   [Remove entries to the current 2.0 and 2.2 section below, when backported]
 
+  *) mod_disk_cache: Delete temporary files if they cannot be renamed to their
+     final name. [Davi Arnaut <davi haxent.com.br>]
+
   *) Worker MPM: On graceless shutdown or restart, send signals to
      each worker thread to wake them up if they're polling on a
      Keep-Alive connection.  PR 38737.  [Chris Darroch]
index 56b9c68bd4712b671abfdd18d3ad7b86cc7f80d2..44a3279f46773d31e309988388f8bb13d7ca34f2 100644 (file)
@@ -165,7 +165,10 @@ static apr_status_t file_cache_el_final(disk_cache_object_t *dobj,
          */
         rv = apr_file_rename(dobj->tempfile, dobj->datafile, r->pool);
         if (rv != APR_SUCCESS) {
-            /* XXX log */
+            ap_log_error(APLOG_MARK, APLOG_DEBUG, rv, r->server,
+                         "disk_cache: rename tempfile to datafile failed:"
+                         " %s -> %s", dobj->tempfile, dobj->datafile);
+            apr_file_remove(dobj->tempfile, r->pool);
         }
 
         dobj->tfd = NULL;
@@ -854,6 +857,7 @@ static apr_status_t store_headers(cache_handle_t *h, request_rec *r, cache_info
                 ap_log_error(APLOG_MARK, APLOG_DEBUG, rv, r->server,
                     "disk_cache: rename tempfile to varyfile failed: %s -> %s",
                     dobj->tempfile, dobj->hdrsfile);
+                apr_file_remove(dobj->tempfile, r->pool);
                 return rv;
             }
 
@@ -946,6 +950,7 @@ static apr_status_t store_headers(cache_handle_t *h, request_rec *r, cache_info
         ap_log_error(APLOG_MARK, APLOG_ERR, rv, r->server,
                      "disk_cache: rename tempfile to hdrsfile failed: %s -> %s",
                      dobj->tempfile, dobj->hdrsfile);
+        apr_file_remove(dobj->tempfile, r->pool);
         return rv;
     }