* fd is no member of disk_cache_object_t. Instead it is a member of
disk_cache_file_t. Close all fd's (fd, tempfd) for all cache elements
(hdrs, data, vary) if they are present.
Submitted by: rpluem
Reviewed/backported by: jim
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@
1420827 13f79535-47bb-0310-9956-
ffa450edef68
PATCHES ACCEPTED TO BACKPORT FROM TRUNK:
[ start all new proposals below, under PATCHES PROPOSED. ]
- * mod_cache_disk: Fix "...rename tempfile to datafile failed...") on Windows.
- PR38827.
- trunk patch: http://svn.apache.org/viewvc?rev=1405856&view=rev
- 2.4.x patch: http://people.apache.org/~covener/patches/httpd-2.4.x-disk-cache-win.diff
- +1 covener, rjung, jim
PATCHES PROPOSED TO BACKPORT FROM TRUNK:
return DECLINED;
}
+static void close_disk_cache_fd(disk_cache_file_t *file)
+{
+ if (file->fd != NULL) {
+ apr_file_close(file->fd);
+ file->fd = NULL;
+ }
+ if (file->tempfd != NULL) {
+ apr_file_close(file->tempfd);
+ file->tempfd = NULL;
+ }
+}
+
static int remove_entity(cache_handle_t *h)
{
+ disk_cache_object_t *dobj = (disk_cache_object_t *) h->cache_obj->vobj;
+
+ close_disk_cache_fd(&(dobj->hdrs));
+ close_disk_cache_fd(&(dobj->vary));
+ close_disk_cache_fd(&(dobj->data));
+
/* Null out the cache object pointer so next time we start from scratch */
h->cache_obj = NULL;
return OK;