summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES3
-rw-r--r--docs/manual/mod/core.html.de6
-rw-r--r--docs/manual/mod/core.html.en6
-rw-r--r--docs/manual/mod/core.xml6
-rw-r--r--docs/manual/mod/core.xml.de6
-rw-r--r--docs/manual/mod/mod_disk_cache.html.en12
-rw-r--r--docs/manual/mod/mod_disk_cache.xml12
-rw-r--r--modules/cache/mod_disk_cache.c11
8 files changed, 59 insertions, 3 deletions
diff --git a/CHANGES b/CHANGES
index fbddfd82e8..aa252afad7 100644
--- 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]
diff --git a/docs/manual/mod/core.html.de b/docs/manual/mod/core.html.de
index a153451eff..892e1fd70c 100644
--- a/docs/manual/mod/core.html.de
+++ b/docs/manual/mod/core.html.de
@@ -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>
diff --git a/docs/manual/mod/core.html.en b/docs/manual/mod/core.html.en
index 8c3d7865c8..c4d8994b90 100644
--- a/docs/manual/mod/core.html.en
+++ b/docs/manual/mod/core.html.en
@@ -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>
diff --git a/docs/manual/mod/core.xml b/docs/manual/mod/core.xml
index c6b3aea437..fd172e34b4 100644
--- a/docs/manual/mod/core.xml
+++ b/docs/manual/mod/core.xml
@@ -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>
diff --git a/docs/manual/mod/core.xml.de b/docs/manual/mod/core.xml.de
index 2d12e67350..129df5f836 100644
--- a/docs/manual/mod/core.xml.de
+++ b/docs/manual/mod/core.xml.de
@@ -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>
diff --git a/docs/manual/mod/mod_disk_cache.html.en b/docs/manual/mod/mod_disk_cache.html.en
index 136eace3d2..54966159d8 100644
--- a/docs/manual/mod/mod_disk_cache.html.en
+++ b/docs/manual/mod/mod_disk_cache.html.en
@@ -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
@@ -45,6 +45,16 @@
<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">
diff --git a/docs/manual/mod/mod_disk_cache.xml b/docs/manual/mod/mod_disk_cache.xml
index de3df92ed9..a2ae881d5d 100644
--- a/docs/manual/mod/mod_disk_cache.xml
+++ b/docs/manual/mod/mod_disk_cache.xml
@@ -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
@@ -43,6 +43,16 @@
<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>
diff --git a/modules/cache/mod_disk_cache.c b/modules/cache/mod_disk_cache.c
index 771ba930d6..3c48769451 100644
--- a/modules/cache/mod_disk_cache.c
+++ b/modules/cache/mod_disk_cache.c
@@ -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) {