DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUGĀ· RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://issues.apache.org/bugzilla/show_bug.cgi?id=41095>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED ANDĀ· INSERTED IN THE BUG DATABASE.
http://issues.apache.org/bugzilla/show_bug.cgi?id=41095 Summary: File etag generation problem Product: Apache httpd-2 Version: 2.2.3 Platform: Other OS/Version: Solaris Status: NEW Severity: normal Priority: P2 Component: Core AssignedTo: [email protected] ReportedBy: [EMAIL PROTECTED] When moving from Apache 1.3 to Apache 2.2.3, we found that Etags being generated for static files changed, thus leading to an increase in the bandwidth usage. We are configured to use only size and modified file time in etag generated ("FileETag MTime Size" directive). Although file modification time and size hasn't changed, we found the etag was different. The size part of the Etag didn't change while the modified time did. Investigating the difference in the code, i found that Apache 2.2.3 was using a file info structure returned by APR which keeps the file modified time in microseconds structure (64 bits wide) instead of the default Unix systemstructure being in seconds (32 bits wide). In modules/http/http_etag.c, Apache will cast the microseconds structure to a unsigned long before calling etag_ulong_to_hex => this will simply truncate value to the first 32 bits before hexadecimal conversion when Apache 2 is compiled in 32 bits mode (default) => some data is simply lost during this conversion and doesn't ensure Etag is different if modification time is. Two possibilities: -> implement an etag_aprtimet_to_hex function to be called -> convert back to seconds (simply devides by APR_USEC_PER_SEC) before calling Second solution makes sure that Etag caculation is identical between Apache 1.3 and 2.0: when migrating, this doesn't generated different Etags. Second solution patch (tested in my test environment): --- http_etag.original.c 2006-07-12 05:38:44.000000000 +0200 +++ http_etag.c 2006-12-01 15:23:03.727393000 +0100 @@ -139,7 +139,7 @@ if (bits_added != 0) { *next++ = '-'; } - next = etag_ulong_to_hex(next, (unsigned long)r->mtime); + next = etag_ulong_to_hex(next, (unsigned long)(r- >mtime/APR_USEC_PER_SEC)); } *next++ = '"'; *next = '\0'; -- Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
