You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by wr...@apache.org on 2001/10/20 20:54:55 UTC
cvs commit: httpd-2.0/modules/generators mod_autoindex.c
wrowe 01/10/20 11:54:55
Modified: modules/generators mod_autoindex.c
Log:
Restrict by content type and encoding before we go and try to drag in some
text to merge as headers and footers to autoindex pages. This will escape
index.gif from a bold attempt to use IndexHeader index ;)
Also pass in the args to the subrequest, for anyone trying to decode what
the user is looking at. A great example of this coming up.
Revision Changes Path
1.87 +23 -4 httpd-2.0/modules/generators/mod_autoindex.c
Index: mod_autoindex.c
===================================================================
RCS file: /home/cvs/httpd-2.0/modules/generators/mod_autoindex.c,v
retrieving revision 1.86
retrieving revision 1.87
diff -u -r1.86 -r1.87
--- mod_autoindex.c 2001/08/19 18:58:19 1.86
+++ mod_autoindex.c 2001/10/20 18:54:54 1.87
@@ -984,21 +984,32 @@
static void emit_head(request_rec *r, char *header_fname, int suppress_amble,
char *title)
{
+ apr_table_t *hdrs = r->headers_in;
apr_file_t *f = NULL;
request_rec *rr = NULL;
int emit_amble = 1;
int emit_H1 = 1;
+ const char *r_accept;
+ const char *r_accept_enc;
/*
* If there's a header file, send a subrequest to look for it. If it's
- * found and a text file, handle it -- otherwise fall through and
- * pretend there's nothing there.
+ * found and html do the subrequest, otherwise handle it
*/
+ r_accept = apr_table_get(hdrs, "Accept");
+ r_accept_enc = apr_table_get(hdrs, "Accept-Encoding");
+ apr_table_setn(hdrs, "Accept", "text/html, text/plain");
+ apr_table_unset(hdrs, "Accept-Encoding");
+
+ if ((header_fname != NULL) && r->args) {
+ header_fname = apr_pstrcat(r->pool, header_fname, "?", r->args, NULL);
+ }
+
if ((header_fname != NULL)
- && (rr = ap_sub_req_lookup_uri(header_fname, r, NULL))
+ && (rr = ap_sub_req_lookup_uri(header_fname , r, NULL))
&& (rr->status == HTTP_OK)
&& (rr->filename != NULL)
- && rr->finfo.filetype == APR_REG) {
+ && (rr->finfo.filetype == APR_REG)) {
/*
* Check for the two specific cases we allow: text/html and
* text/anything-else. The former is allowed to be processed for
@@ -1043,6 +1054,14 @@
}
}
}
+
+ if (r_accept)
+ apr_table_setn(hdrs, "Accept", r_accept);
+ else
+ apr_table_unset(hdrs, "Accept");
+
+ if (r_accept_enc)
+ apr_table_setn(hdrs, "Accept-Encoding", r_accept_enc);
if (emit_amble) {
emit_preamble(r, title);