]> granicus.if.org Git - apache/commitdiff
Change default FileETag to be "size mtime", i.e. remove the inode. Adjust the
authorStefan Fritsch <sf@apache.org>
Tue, 8 Nov 2011 03:06:08 +0000 (03:06 +0000)
committerStefan Fritsch <sf@apache.org>
Tue, 8 Nov 2011 03:06:08 +0000 (03:06 +0000)
etag generation in mod_dav_fs to the new default.

PR 49623.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1199086 13f79535-47bb-0310-9956-ffa450edef68

CHANGES
docs/manual/mod/core.xml
docs/manual/upgrading.xml
include/http_core.h
modules/dav/fs/repos.c

diff --git a/CHANGES b/CHANGES
index c90cb75bdfe47b22236ce53f8150afb557bf464f..6989966d88aee8d67234e3ca02698f9aa22b046f 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -16,6 +16,9 @@ Changes with Apache 2.3.15
      core: Fix integer overflow in ap_pregsub. This can be triggered e.g.
      with mod_setenvif via a malicious .htaccess. [Stefan Fritsch]
 
+  *) core, mod_dav_fs: Change default ETag to be "size mtime", i.e. remove
+     the inode. PR 49623. [Stefan Fritsch]
+
   *) mod_lua: Expose SSL variables via r:ssl_var_lookup().  [Eric Covener]
 
   *) mod_lua: LuaHook{AccessChecker,AuthChecker,CheckUserID,TranslateName}
index 465efa3204a39b828104e9fc35f43923f8826697..1469efbe8551cb28a46abaa55ff779b05918f537 100644 (file)
@@ -1532,11 +1532,13 @@ request</description>
 <description>File attributes used to create the ETag
 HTTP response header for static files</description>
 <syntax>FileETag <var>component</var> ...</syntax>
-<default>FileETag INode MTime Size</default>
+<default>FileETag MTime Size</default>
 <contextlist><context>server config</context><context>virtual host</context>
 <context>directory</context><context>.htaccess</context>
 </contextlist>
 <override>FileInfo</override>
+<compatibility>The default used to be "INode&nbsp;MTime&nbsp;Size" in 2.3.14 and
+earlier.</compatibility>
 
 <usage>
     <p>
@@ -1579,7 +1581,7 @@ HTTP response header for static files</description>
     <note type="warning"><title>Warning</title>
     Do not change the default for directories or locations that have WebDAV
     enabled and use <module>mod_dav_fs</module> as a storage provider.
-    <module>mod_dav_fs</module> uses <code>INode&nbsp;MTime&nbsp;Size</code>
+    <module>mod_dav_fs</module> uses <code>MTime&nbsp;Size</code>
     as a fixed format for <code>ETag</code> comparisons on conditional requests.
     These conditional requests will break if the <code>ETag</code> format is
     changed via <directive>FileETag</directive>.
index e0d42f61e0285dabea13f5c3eab60dbac95d6a8f..e7fff87970ee3ff43870c2d3bdafb74cc1a0a27d 100644 (file)
         <li><directive module="core">EnableSendfile</directive> now
         defaults to Off.</li>
 
+        <li><directive module="core">FileETag</directive> now
+        defaults to "MTime Size" (without INode).</li>
+
         <li><module>mod_log_config</module>: <a
         href="modules/mod_log_config.html#formats">${cookie}C</a>
         matches whole cookie names.  Previously any substring would
index fa214af97600daecc26309091f23572321b6b08a..a6be6fb883fce836dc0f322bbb0907582b3fbb0e 100644 (file)
@@ -461,8 +461,9 @@ typedef unsigned long etag_components_t;
 #define ETAG_MTIME (1 << 1)
 #define ETAG_INODE (1 << 2)
 #define ETAG_SIZE  (1 << 3)
-#define ETAG_BACKWARD (ETAG_MTIME | ETAG_INODE | ETAG_SIZE)
 #define ETAG_ALL   (ETAG_MTIME | ETAG_INODE | ETAG_SIZE)
+/* This is the default value used */
+#define ETAG_BACKWARD (ETAG_MTIME | ETAG_SIZE)
 
 /**
  * @brief Server Signature Enumeration
index 40395ca87ec47754f620b7664655fefe2809df09..6c4c44b1fdef8a3088f6e8b38d5193767dbcb0c7 100644 (file)
@@ -1859,14 +1859,14 @@ static dav_error * dav_fs_walk(const dav_walk_params *params, int depth,
 static const char *dav_fs_getetag(const dav_resource *resource)
 {
     dav_resource_private *ctx = resource->info;
+    /* XXX: This should really honor the FileETag setting */
 
     if (!resource->exists)
         return apr_pstrdup(ctx->pool, "");
 
     if (ctx->finfo.filetype != APR_NOFILE) {
         return apr_psprintf(ctx->pool, "\"%" APR_UINT64_T_HEX_FMT "-%"
-                            APR_UINT64_T_HEX_FMT "-%" APR_UINT64_T_HEX_FMT "\"",
-                            (apr_uint64_t) ctx->finfo.inode,
+                            APR_UINT64_T_HEX_FMT "\"",
                             (apr_uint64_t) ctx->finfo.size,
                             (apr_uint64_t) ctx->finfo.mtime);
     }