www-apache-bugdb mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Klaus Mueller <K.Muel...@intershop.de>
Subject RE: mod_proxy/3640: Could not GC proxy directory; Permission deni ed
Date Mon, 01 Mar 1999 16:00:01 GMT
The following reply was made to PR mod_proxy/3640; it has been noted by GNATS.

From: Klaus Mueller <K.Mueller@intershop.de>
To: "'apbugs@hyperreal.org'" <apbugs@hyperreal.org>, 
	"'apache-bugdb@apache.org'" <apache-bugdb@apache.org>, Klaus Mueller
	 <K.Mueller@intershop.de>
Cc: "'Kummer, Ben'" <KUMMER@vdivde-it.de>
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 (KUMMER@vdivde-it.de) 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

Mime
View raw message