If a subreq added a filter (say INCLUDES) and the subreq was promoted via
fast_redirect, the filter would still point at the subreq - rather than the original r. So, we must update any filters pointing at rr to be r. This would cause lots of problems with mod_include with mod_dir requests such as seen in PR 7966. mod_include would be unsetting the headers_out of rr instead of r. But, we disassociate rr->headers_out and r->headers_out. Therefore, the C-L header in r->headers_out would remain - even though it bears no relation to what we will be outputting - causing problems. This also now permits chunked-encoding of mod_dir/mod_include requests which could never happen before and fixes the content-length problem seen in PR 7966. As hinted at in PR 7966, there is a race condition - if for some reason the server stalls reading an included file (or even better, placing a sleep in the cgi-bin script!), the invalid C-L may get propogated to the client. (Note that internal_internal_redirect has this same code fragment.) PR: 7966 git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@94832 13f79535-47bb-0310-9956-ffa450edef68
parent
ee78428c
Please register or sign in to comment