Not that I'm advocating committing this, but this is what I'm
using locally in order to get the AddOutputFilterByType directive
to work with mod_dir/mod_negotiation internal redirects. -- justin
Index: modules/http/http_request.c
===
RCS file: /home/cvs/httpd-2.0/modules/http/http_request.c,v
retrieving revision 1.125
diff -u -r1.125 http_request.c
--- modules/http/http_request.c 25 Jan 2002 01:11:46 - 1.125
+++ modules/http/http_request.c 19 Feb 2002 00:17:05 -
@@ -415,6 +415,8 @@
/* XXX: Is this function is so bogus and fragile that we deep-6 it? */
AP_DECLARE(void) ap_internal_fast_redirect(request_rec *rr, request_rec *r)
{
+ap_filter_t *fnew;
+
/* We need to tell POOL_DEBUG that we're guaranteeing that rr-pool
* will exist as long as r-pool. Otherwise we run into troubles because
* some values in this request will be allocated in r-pool, and others in
@@ -441,6 +443,27 @@
r-err_headers_out);
r-subprocess_env = apr_table_overlay(r-pool, rr-subprocess_env,
r-subprocess_env);
+
+fnew = rr-output_filters;
+while (fnew) {
+ap_filter_t *f;
+int found = 0;
+
+f = r-output_filters;
+while (f) {
+if(!strcasecmp(f-frec-name, fnew-frec-name)) {
+found = 1;
+break;
+}
+f = f-next;
+}
+/* Do not add the subreq_core filter! */
+if (!found strcasecmp(fnew-frec-name, subreq_core)) {
+ap_add_output_filter(fnew-frec-name, NULL, r, r-connection);
+}
+
+fnew = fnew-next;
+}
}
AP_DECLARE(void) ap_internal_redirect(const char *new_uri, request_rec *r)