Loading ...
Sorry, an error occurred while loading the content.

Outgoing content-length apparently 0

Expand Messages
  • Craig or Merikay MacKenna
    Hope this is the address to which to send a problem/question! Our Verio Virtual Private Server is FreeBSD-based with Apache 1.3.33. I ve installed mod-perl
    Message 1 of 1 , Apr 27, 2005
    • 0 Attachment
      Hope this is the address to which to send a problem/question!

      Our Verio "Virtual Private Server" is FreeBSD-based with Apache 1.3.33.
      I've installed mod-perl 1.29 and mod_gzip, and revised our former
      CGI scripts to run as perl modules under the Apache API.

      They are operating fine, except for one residual problem.

      When a script builds a response, mod_gzip squawks in the error_log like
      ... [error] mod_gzip: EMPTY FILE [/tmp/_16777_106_7.wrk] in sendfile2
      ... [error] mod_gzip: Make sure all named directories exist and have ...

      The corresponding entry in access_log looks like this:
      ... "POST /contact HTTP/1.1" 200 0 or
      ... "GET /x/whoami.cgi HTTP/1.1" 200 0

      The zero outgoing length in the log entry agrees with mod_gzip's complaint,
      but in reality the correct body is going out to the browser (I was the
      browser user for both of the access_log cases above). The former case
      (contact) runs under mod_perl, while the latter runs under mod_cgi.

      Today I tried an approach to solving this, wherein I build up the whole body
      in a scalar $body, and then do a


      where send_response is:

      sub send_response {
      $r->header_out("Content-Length", length $body);
      if (!$r->header_only) {$r->print($body)}
      undef $body;

      The problem still persists. So I searched our logs. The first "200 0" log
      entry for a script was seen before I installed mod_gzip, and after I
      followed the advice of the "Practical mod-perl" book, and moved all of the
      scripts from /usr/local/apache/cgi-bin to a new directory
      /usr/local/apache/perl. Before that the scripts had been running fairly
      correctly under mod_perl and Apache::Registry in .../cgi-bin, without
      showing any "200 0" log entries for scripts.

      None of the following changes in httpd.conf seem to affect the problem:
      PerlSendHeaders On/Off
      PerlSetupEnv On/Off
      Option +ExecCGI in the Location block of a script

      Finally I tried making a <Location /cgi-bin/contact.cgi> block in an attempt
      to get as close to the conditions under which the last script output with a
      non-zero length was seen. No help!

      Scripts that do a redirect using the same send_response routine as above,
      show log entries like "302 771", although $body contained just a few bytes.

      So my question is: what do I need to do, to make Apache hand off the output
      from the script to mod_gzip properly, and (far less important) show the
      proper length in the log?

      Thanks to anyone who can help,
      Craig MacKenna
      Los Gatos, CA
    Your message has been successfully submitted and would be delivered to recipients shortly.