This is another attempt at fixing mod_autoindex. This works for me on my computer, and it explains the problem. I haven't been able to actually reproduce the problem, but I have seen the symptoms. Can somebody who can reproduce PLEASE test this on their setup. I am hoping to setup a failure condition soon so that I can test this myself.
I may commit this either way, because even if this doesn't fix the problem from apache.org, it does solve a problem with data ordering. This is the cleanest way I could find to solve the problem, but I am perfectly willing to listen to other ideas. Ryan Index: modules/generators/mod_autoindex.c =================================================================== RCS file: /home/cvs/httpd-2.0/modules/generators/mod_autoindex.c,v retrieving revision 1.102 diff -u -d -b -w -u -r1.102 mod_autoindex.c --- modules/generators/mod_autoindex.c 20 Mar 2002 17:41:54 -0000 1.102 +++ modules/generators/mod_autoindex.c 5 Apr 2002 06:26:08 -0000 @@ -1017,6 +1017,7 @@ if (rr->content_type != NULL) { if (!strcasecmp(ap_field_noparam(r->pool, rr->content_type), "text/html")) { + ap_filter_t *f; /* Hope everything will work... */ emit_amble = 0; emit_H1 = 0; @@ -1024,6 +1025,22 @@ if (! suppress_amble) { emit_preamble(r, title); } + /* This is a hack, but I can't find any better way to do this. + * The problem is that we have already created the sub-request, + * but we just inserted the OLD_WRITE filter, and the + * sub-request needs to pass its data through the OLD_WRITE + * filter, or things go horribly wrong (missing data, data in + * the wrong order, etc). To fix it, if you create a + * sub-request and then insert the OLD_WRITE filter before you + * run the request, you need to make sure that the sub-request + * data goes through the OLD_WRITE filter. Just steal this + * code. The long-term solution is to remove the ap_r* + * functions. + */ + for (f=rr->output_filters; + f->frec != ap_subreq_core_filter_handle; f = f->next); + f->next = r->output_filters; + /* * If there's a problem running the subrequest, display the * preamble if we didn't do it before -- the header file ---------------------------------------------- Ryan Bloom [EMAIL PROTECTED] 645 Howard St. [EMAIL PROTECTED] San Francisco, CA