You are viewing a plain text version of this content. The canonical link for it is here.
Posted to bugs@httpd.apache.org by bu...@apache.org on 2004/09/10 17:45:43 UTC

DO NOT REPLY [Bug 17629] - mod_deflate mixes compressed and uncompressed data when SSI issues a redirect

DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=17629>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://issues.apache.org/bugzilla/show_bug.cgi?id=17629

mod_deflate mixes compressed and uncompressed data when SSI issues a redirect





------- Additional Comments From nick@webthing.com  2004-09-10 15:45 -------
I've been playing with this example, and have I think a better diagnosis.  This
is from mod_filter, into which I've now incorporated debugging info from the old
mod_diagnostics (I'm planning to check mod_filter into CVS real soon now:-).

The deflate filter gets called three times:
(1) with an mmap bucket of size zero (before the SSI include)
(2) with an mmap bucket from the include, followed by an EOS bucket
(3) with an mmap bucket containing text after the SSI include, and *another* EOS.

(2) is from the subrequest, and doesn't work because of
       /* only work on main request/no subrequests */
        if (r->main) {
            ap_remove_output_filter(f);
            return ap_pass_brigade(f->next, bb);
        }

We can't simply fix that by removing the test: then we'd have two interleaved
but different streams of compressed data coming out.

Running DEFLATE as a PROTOCOL filter but before prepending the headers (i.e.
giving it a new slot in the filter chain) looks as if it should fix this, though
I'm not sure.  I'm thinking about whether I can fix this as part of mod_filter
development.

---------------------------------------------------------------------
To unsubscribe, e-mail: bugs-unsubscribe@httpd.apache.org
For additional commands, e-mail: bugs-help@httpd.apache.org