]> granicus.if.org Git - apache/commitdiff
fix mod_disk_cache to support EnableSendfile.
authorLars Eilebrecht <lars@apache.org>
Sat, 21 Feb 2009 17:07:01 +0000 (17:07 +0000)
committerLars Eilebrecht <lars@apache.org>
Sat, 21 Feb 2009 17:07:01 +0000 (17:07 +0000)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@746541 13f79535-47bb-0310-9956-ffa450edef68

CHANGES
docs/manual/mod/core.html.de
docs/manual/mod/core.html.en
docs/manual/mod/core.xml
docs/manual/mod/core.xml.de
docs/manual/mod/mod_disk_cache.html.en
docs/manual/mod/mod_disk_cache.xml
modules/cache/mod_disk_cache.c

diff --git a/CHANGES b/CHANGES
index fbddfd82e8840d9554b9ed6c49383adde26c2910..aa252afad70139e5b6b3328cd24c847c96e5dab6 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,9 @@
                                                         -*- coding: utf-8 -*-
 Changes with Apache 2.3.2
 
+  *) mod_disk_cache: The module now turns off sendfile support if
+     'EnableSendfile off' is defined globally. [Lars Eilebrecht]
+
   *) mod_deflate: Adjust content metadata before bailing out on 304
      responses so that the metadata does not differ from 200 response.
      [Roy T. Fielding]
index a153451effcd414f8646109a4df9260e049c33ef..892e1fd70cc19fcff499cef6f076e306baf78372 100644 (file)
@@ -978,6 +978,12 @@ Dateien an den Client auszuliefern</td></tr>
       </span>
       &lt;/Directory&gt;
     </code></p></div>
+    <p>Beachten Sie bitte, dass die verzeichnisbasierte und
+       .htaccess-Konfiguration von <code class="directive">EnableSendfile</code>
+       nicht vom <code class="module"><a href="../mod/mod_disk_cache.html">mod_disk_cache</a></code>-Modul unterstützt wird.
+       Nur die globale Konfiguration von <code class="directive">EnableSendfile</code>
+       wird vom Modul beachtet.
+    </p>
 
 </div>
 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
index 8c3d7865c89a1ea98e0cd98a57e735312e41e1df..c4d8994b904b7bd50a3cd6b022b5317633ba828e 100644 (file)
@@ -939,6 +939,12 @@ Locations</a></li>
       </span>
       &lt;/Directory&gt;
     </code></p></div>
+    <p>Please note that the per-directory and .htaccess configuration
+       of <code class="directive">EnableSendfile</code> is not supported by
+       <code class="module"><a href="../mod/mod_disk_cache.html">mod_disk_cache</a></code>.
+       Only global definition of <code class="directive">EnableSendfile</code>
+       is taken into account by the module.
+    </p>
 
 </div>
 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
index c6b3aea437971875822f7c00ab435d79aa6788eb..fd172e34b4e6a74bfae0fbab90f5a5d54e165f0d 100644 (file)
@@ -900,6 +900,12 @@ Locations</a></seealso>
       </indent>
       &lt;/Directory&gt;
     </example>
+    <p>Please note that the per-directory and .htaccess configuration
+       of <directive>EnableSendfile</directive> is not supported by
+       <module>mod_disk_cache</module>.
+       Only global definition of <directive>EnableSendfile</directive>
+       is taken into account by the module.
+    </p>
 </usage>
 </directivesynopsis>
 
index 2d12e673501d7980138c923ddbf05fd70b9c507b..129df5f83611df1c9c6aabfb87a95c3cc153a110 100644 (file)
@@ -925,6 +925,12 @@ Dateien an den Client auszuliefern</description>
       </indent>
       &lt;/Directory&gt;
     </example>
+    <p>Beachten Sie bitte, dass die verzeichnisbasierte und
+       .htaccess-Konfiguration von <directive>EnableSendfile</directive>
+       nicht vom <module>mod_disk_cache</module>-Modul unterst&uuml;tzt wird.
+       Nur die globale Konfiguration von <directive>EnableSendfile</directive>
+       wird vom Modul beachtet.
+    </p>
 </usage>
 </directivesynopsis>
 
index 136eace3d22d4cd663f72f2c10c8a439c6e9e27c..54966159d8d4f86c376f916581189c19e854e559 100644 (file)
@@ -32,7 +32,7 @@
 <h3>Summary</h3>
 
     <p><code class="module"><a href="../mod/mod_disk_cache.html">mod_disk_cache</a></code> implements a disk based storage
-    manager. It is primarily of use in conjunction
+    manager. It is primarily of use in conjunction with
     <code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code>.</p>
 
     <p>Content is stored in and retrieved from the cache using URI based
       <p><code class="module"><a href="../mod/mod_disk_cache.html">mod_disk_cache</a></code> requires the services of
       <code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code>.</p>
     </div>
+    <div class="note"><h3>Note:</h3>
+      <p><code class="module"><a href="../mod/mod_disk_cache.html">mod_disk_cache</a></code> uses the sendfile feature to
+      serve files from the cache when supported by the platform, and
+      when enabled with <code class="directive"><a href="../mod/core.html#enablesendfile">EnableSendfile</a></code>.
+      However, per-directory and .htaccess configuration of
+      <code class="directive"><a href="../mod/core.html#enablesendfile">EnableSendfile</a></code> are ignored my
+      <code class="module"><a href="../mod/mod_disk_cache.html">mod_disk_cache</a></code> as the corresponding settings are not
+      available to the module when a request is being served from the
+      cache.</p>
+    </div>
 </div>
 <div id="quickview"><h3 class="directives">Directives</h3>
 <ul id="toc">
index de3df92ed982742a2a417f385f663a4fa72a7608..a2ae881d5d466725229d01c567c32eff9d406537 100644 (file)
@@ -30,7 +30,7 @@
 
 <summary>
     <p><module>mod_disk_cache</module> implements a disk based storage
-    manager. It is primarily of use in conjunction
+    manager. It is primarily of use in conjunction with
     <module>mod_cache</module>.</p>
 
     <p>Content is stored in and retrieved from the cache using URI based
       <p><module>mod_disk_cache</module> requires the services of
       <module>mod_cache</module>.</p>
     </note>
+    <note><title>Note:</title>
+      <p><module>mod_disk_cache</module> uses the sendfile feature to
+      serve files from the cache when supported by the platform, and
+      when enabled with <directive module="core">EnableSendfile</directive>.
+      However, per-directory and .htaccess configuration of
+      <directive module="core">EnableSendfile</directive> are ignored my
+      <module>mod_disk_cache</module> as the corresponding settings are not
+      available to the module when a request is being served from the
+      cache.</p>
+    </note>
 </summary>
 
 <directivesynopsis>
index 771ba930d65bb5eca51f8f0067abb7c5bea23459..3c4876945179c0407ad271e2081c8d2b2407c0ca 100644 (file)
@@ -376,6 +376,10 @@ static int open_entity(cache_handle_t *h, request_rec *r, const char *key)
     static int error_logged = 0;
     disk_cache_conf *conf = ap_get_module_config(r->server->module_config,
                                                  &disk_cache_module);
+#ifdef APR_SENDFILE_ENABLED
+    core_dir_config *coreconf = ap_get_module_config(r->per_dir_config,
+                                                     &core_module);
+#endif
     apr_finfo_t finfo;
     cache_object_t *obj;
     cache_info *info;
@@ -471,7 +475,12 @@ static int open_entity(cache_handle_t *h, request_rec *r, const char *key)
     /* Open the data file */
     flags = APR_READ|APR_BINARY;
 #ifdef APR_SENDFILE_ENABLED
-    flags |= APR_SENDFILE_ENABLED;
+    /* When we are in the quick handler we don't have the per-directory
+     * configuration, so this check only takes the globel setting of
+     * the EnableSendFile directive into account.
+     */
+    flags |= ((coreconf->enable_sendfile == ENABLE_SENDFILE_OFF)
+              ? 0 : APR_SENDFILE_ENABLED);
 #endif
     rc = apr_file_open(&dobj->fd, dobj->datafile, flags, 0, r->pool);
     if (rc != APR_SUCCESS) {