This looks a bit like bug # 7666 (closed) When you use <--#include virtual="blah.cgi" --> in an ssi page, and apache runs a cgi-wrapper instead of the default cgi-script handler, the Content-length header of the rendered page will be set to the content length of the output of the script that was included + the length of the static content in the shtml file *up to* the include virtual element. So browsers that use the Content-length header truncate the output after the output of the script. This is even more severe when you include more than one cgi in the above way. The Content-length will still be the output length of the *first* script + static content before that one. It looks like this is another or the same problem with timing of the filter as bug 7666?? Reproduce: 1. I use Redhat 8.0, standard install, httpd now 2.0.40-11. (I tried to install 2.0.43 thru an rpm, but this did not work because of dependencies). 2. Create a fake cgi-wrapper, that does nothing but run the script. I'll attach a file called testwrap, in perl code. It runs the script and logs the size in bytes to a file in /tmp. Asume this is in /usr/local/testwrapper/testwrap and executable for apache. 3. Make sure Includes are used, I used this globaly in httpd.conf: AddType text/html .shtml .shtm AddOutputFilter INCLUDES .shtm .shtml .htm .html Options +Includes AcceptPathInfo On 4. Make sure all .cgi gets handled by the testwrap script from step 2. I used this in a virtual host: ScriptAlias /testwrapper/ /usr/local/testwrapper/ AddHandler test_wrapper .cgi .pl Action test_wrapper /testwrapper/testwrap 5. Reload the server etc. 6. In the documentroot of the virtual host, I created a test.shtml, test1.cgi and test2.cgi. test.shtml does an include virtual of test1.cgi (that outputs a header + 100 bytes) and test2.cgi (header + 500 bytes). All files readable and the cgi scripts executable for apache. 7. Internet explorer en netscape only show the page up to and including the first script. wget -O - (url) will show that the content-length header is wrong, but will still get the whole file, showing that everything runs fine. I hope I just did something wrong, in which case my appologies.
Created attachment 4588 [details] testwrap file (see description)
Created attachment 4589 [details] test.shtml file (see description)
Created attachment 4590 [details] test1.cgi (see bug description)
Created attachment 4591 [details] test2.cgi (see bug description)
I understand you have a problem with upgrading, but it is unlikely that Apache developers are going to want to work on a problem with a release that is several versions out of date. If you can't upgrade for some Redhat-related reason, you may want to report this in Redhat's bug tracking database.
Well, I díd check the changelogs from 2.0.40 up to see if something like this was fixed.... I did not find it. Maybe someone could at least tell wether this was fixed or not? For the rest, this is my testserver, so I could do without this for a while. Just trying to be helpful...
There were several rixes related to the content-length filter. I would think that it should be just getting out of the way and not returning a content-length in this case. But I can't say for sure whether this problem was fixed. The easiest way is to try.
This bug seems to be sort-of fixed in 2.0.44, but problems still exists in the way the cgi-output is included. See my new bug report 16673.
Mark this as fixed. Further tracking in bug 16673.