diff options
-rw-r--r-- | CHANGES | 3 | ||||
-rw-r--r-- | docs/manual/mod/core.html.de | 6 | ||||
-rw-r--r-- | docs/manual/mod/core.html.en | 6 | ||||
-rw-r--r-- | docs/manual/mod/core.xml | 6 | ||||
-rw-r--r-- | docs/manual/mod/core.xml.de | 6 | ||||
-rw-r--r-- | docs/manual/mod/mod_disk_cache.html.en | 12 | ||||
-rw-r--r-- | docs/manual/mod/mod_disk_cache.xml | 12 | ||||
-rw-r--r-- | modules/cache/mod_disk_cache.c | 11 |
8 files changed, 59 insertions, 3 deletions
@@ -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> </Directory> </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> </Directory> </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> </Directory> </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> </Directory> </example> + <p>Beachten Sie bitte, dass die verzeichnisbasierte und + .htaccess-Konfiguration von <directive>EnableSendfile</directive> + nicht vom <module>mod_disk_cache</module>-Modul unterstü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) { |