1
0
mirror of https://github.com/apache/httpd.git synced 2025-11-06 16:49:32 +03:00

fix mod_disk_cache to support EnableSendfile.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@746541 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Lars Eilebrecht
2009-02-21 17:07:01 +00:00
parent 477355f136
commit 77188b407d
8 changed files with 59 additions and 3 deletions

View File

@@ -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]

View 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<73>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>

View 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>

View 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>

View 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>

View 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
@@ -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">

View 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
@@ -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>

View 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) {