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

58690Re: bug with mod_perl and CGI.pm

Expand Messages
  • Lincoln Stein
    Apr 30, 2004
    • 0 Attachment
      Hi Lan,

      Do you think this might be a bug in mod_perl 1.99X? It is the
      responsibility of mod_perl's CGI compatibility mode to set the CGI
      environment variables. It doesn't look as though CGI.pm ever tries
      to set CONTENT_LENGTH itself, even when running under mod_perl, but
      relies on mod_perl to do this. I'm not trying to evade
      responsibility here, but just to understand where this bug report
      should be directed.

      Best,

      Lincoln

      On Wednesday 28 April 2004 10:01 am, Lan Yufeng wrote:
      > Hi, father of CGI.pm :)
      > I found a problem when using CGI.pm to parse POSTed data passed to
      > mod_perl handler: The %ENV{Content-Length} will never get changed,
      > which make CGI $query object method param() returned incorrect hash
      > data after the 1st post request.
      > Here is the script to test:
      > -- t/post.t ---->
      >
      > use Apache::Test;use Apache::TestUtil;use Apache::TestRequest
      > 'POST'; # First post request
      > my $location='/test/post'
      > my $resp = POST $location, Content=>[ name=>'foo',
      > title=>'bar',]; # following requests go on.
      > my $resp = POST $location Content=>[ some=>'a long string
      > exceeds the content-length of the last request', string=>'another
      > string you wont see',];
      > chomp(my $re = $resp->content);
      > ok t_cmp("expected value",$re,"A bug with mod_perl and
      > CGI.pm");
      >
      > --- end ----
      > -- codes in a mod_perl reponse handler Apache::Post-->
      >
      > my $q = new CGI($r);
      > $r->print($q->Dump);
      > return Apache::OK;
      >
      > --- end ----
      > --- part of httpd.conf ---
      >
      > <Location /test/post>
      > SetHandler modperl
      > PerlResponseHandler Apache::Post
      > </Location>
      >
      > --- end ----
      > run script with: "t/TEST t/post.t -verbose"
      > And you will found that only part of the second POST request data
      > is dumped by $q->Dump
      >
      > * the version of CGI.pm (perl -MCGI -le 'print $CGI::VERSION'):
      > 3.05 * the version of Perl (perl -v): v5.8.0
      > * the name and version of your Web server: Apache 2.0.44 with
      > mod_perl 1.99-05
      > * the name and version of the operating system you are using:
      > Redhat 8.0
      > * if applicable, the name and version of the browser you are
      > using: perl LWP module
      > * a short test script that reproduces the problem (30 lines or
      > less): as above.
      >
      > I just want to use CGI.pm to parse POSTed data from clients in this
      > case until I found this problem. I think every time I call "new
      > CGI($apache_request_object)", the %ENV{Content-length} needed to
      > read data in CGI.pm doesn't get refreshed.
      >
      > BTW, I can use built-in API "$r->read()" in mod_perl to read
      > compelete posted body data and headers.
      >
      > sincerely yours,

      --
      Lincoln D. Stein
      Cold Spring Harbor Laboratory
      1 Bungtown Road
      Cold Spring Harbor, NY 11724

      --
      Report problems: http://perl.apache.org/bugs/
      Mail list info: http://perl.apache.org/maillist/modperl.html
      List etiquette: http://perl.apache.org/maillist/email-etiquette.html
    • Show all 4 messages in this topic