The following reply was made to PR mod_proxy/3640; it has been noted by GNATS.
From: Klaus Mueller <[EMAIL PROTECTED]>
To: "'[EMAIL PROTECTED]'" <[EMAIL PROTECTED]>,
"'[email protected]'" <[email protected]>, Klaus Mueller
<[EMAIL PROTECTED]>
Cc: "'Kummer, Ben'" <[EMAIL PROTECTED]>
Subject: RE: mod_proxy/3640: Could not GC proxy directory; Permission deni
ed
Date: Mon, 1 Mar 1999 16:54:26 +0100
With suggestions and support from Ben Kummer ([EMAIL PROTECTED]) I made a
small bug fix.
Here is the diff command line I used:
diff proxy_cache.c.org proxy_cache.c >proxy_cache.c.diff
The result of the diff is:
----------------------------------------------------
403,406c403,405
< /* is it a temporary file? */
< if (strncmp(ent->d_name, "tmp", 3) == 0) {
< /* then stat it to see how old it is; delete temporary files > 1 day old
*/
< if (stat(filename, &buf) == -1) {
---
>
> /* stat the file to get type and date */
> if (stat(filename, &buf) == -1) {
410,411c409,412
< }
< else if (garbage_now != -1 && buf.st_atime < garbage_now -
SEC_ONE_DAY &&
---
> }
> /* is it a temporary file? */
> if (strncmp(ent->d_name, "tmp", 3) == 0) {
> if (garbage_now != -1 && buf.st_atime < garbage_now -
SEC_ONE_DAY &&
450,464d450
< /* read the file */
< fd = open(filename, O_RDONLY | O_BINARY);
< if (fd == -1) {
< if (errno != ENOENT)
< ap_log_error(APLOG_MARK, APLOG_ERR, r->server,
< "proxy gc: open(%s)", filename);
< continue;
< }
< if (fstat(fd, &buf) == -1) {
< ap_log_error(APLOG_MARK, APLOG_ERR, r->server,
< "proxy gc: fstat(%s)", filename);
< close(fd);
< continue;
< }
<
466a453
> /* use stat from above */
469d455
< close(fd);
487a474,484
>
> /* read the file */
> fd = open(filename, O_RDONLY | O_BINARY);
> if (fd == -1) {
> if (errno != ENOENT)
> ap_log_error(APLOG_MARK, APLOG_ERR, r->server,
> "proxy gc: open(%s)", filename);
> continue;
> }
>
> /* stat already done */
----------------------------------------------------
Problem description:
A stat was only made if the file is a .tmp file. Otherwise the file is
opened (failed for directory on WinNT) and the file desciptor is used to
call fstat().
I used only one stat() call for all types of files and removed the fstat().
The file is only opened if it's not a directory.
Please review the changes and add it to further Win32 releases
Thanks
Klaus Mueller