Red Hat Bugzilla – Bug 82986
Content-length miscalculated when using ssi include virtual with wrapped cgi
Last modified: 2007-04-18 12:50:26 EDT
This is a resend of the bug I posted to the apache bugzilla. (See url).
They suggested I tried apache 2.0.44, which is not available for Redhat yet.
(rpm's have dependencie problems, I did not do a compile).
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 problem of the mod_include filter that calculates content-length.
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
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.
*** This bug has been marked as a duplicate of 82985 ***
Changed to 'CLOSED' state since 'RESOLVED' has been deprecated.