Commit fdb4053a authored by Ruediger Pluem's avatar Ruediger Pluem
Browse files

* Remove temporary files if renaming fails, otherwise they may accumulate.

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
parent 14774214
Loading
Loading
Loading
Loading
+3 −0
Changes for CHANGES: 3 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -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]
+6 −1
Changes for modules/cache/mod_disk_cache.c: 6 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -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;
    }