1
0
mirror of https://github.com/apache/httpd.git synced 2025-08-08 15:02:10 +03:00

Fix subreqs with non-defined Content-Types being served improperly.

If we do not know a C-T for a subreq, we *must* propogate that
non-knowledge upwards to the main request.

Previously, if you used a DirectoryIndex with a file without a C-T (say
.shtml without AddType), the r->content_type will be kept as
httpd/unix-directory when we promoted the subreq in mod_dir.  Since there
would be no handler on this file, ap_invoke_handler (config.c:355) would
set the handler to be httpd/unix-directory (which was the old C-T of the
dir).  This would then trigger the handler to become httpd/unix-directory.
mod_autoindex would then try to serve the request.  But, the filename
was propogated upwards by mod_dir's DirectoryIndex via
internal_fast_redirect - it would then return a 403 trying to generate a
mod_autoindex page for a file.

Now, we will use ap_default_type() which is correct.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@94676 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Justin Erenkrantz
2002-04-17 04:09:07 +00:00
parent abfad02617
commit 4d16513418
3 changed files with 8 additions and 4 deletions

View File

@@ -1,5 +1,8 @@
Changes with Apache 2.0.36 Changes with Apache 2.0.36
*) Fix subreqs with non-defined Content-Types being served improperly.
[Justin Erenkrantz]
*) Merge in latest GNU config.guess and config.sub files. PR 7818. *) Merge in latest GNU config.guess and config.sub files. PR 7818.
[Justin Erenkrantz] [Justin Erenkrantz]

View File

@@ -1297,7 +1297,10 @@ static void fixup_vary(request_rec *r)
AP_DECLARE(void) ap_set_content_type(request_rec *r, const char *ct) AP_DECLARE(void) ap_set_content_type(request_rec *r, const char *ct)
{ {
if (!r->content_type || strcmp(r->content_type, ct)) { if (!ct) {
r->content_type = NULL;
}
else if (!r->content_type || strcmp(r->content_type, ct)) {
r->content_type = ct; r->content_type = ct;
/* Insert filters requested by the AddOutputFiltersByType /* Insert filters requested by the AddOutputFiltersByType

View File

@@ -422,9 +422,7 @@ AP_DECLARE(void) ap_internal_fast_redirect(request_rec *rr, request_rec *r)
r->args = rr->args; r->args = rr->args;
r->finfo = rr->finfo; r->finfo = rr->finfo;
r->handler = rr->handler; r->handler = rr->handler;
if (rr->content_type) { ap_set_content_type(r, rr->content_type);
ap_set_content_type(r, rr->content_type);
}
r->content_encoding = rr->content_encoding; r->content_encoding = rr->content_encoding;
r->content_languages = rr->content_languages; r->content_languages = rr->content_languages;
r->per_dir_config = rr->per_dir_config; r->per_dir_config = rr->per_dir_config;