Hi Hakan,
CGI::Minimal has a "truncate" function that picks up invalid CGI
data ... this may help.
Nigel
> On Wed, 2 Oct 2002, Wes Cravens wrote:
>
> > On 02 Oct 2002 15:23 GMT I wrote:
> >
> > >
> > > Hi!
> > >
> > > We're developing a perl module for apache/mod_perl, but have encountered a
> > > really strange problem.
> > >
> > > After 'a while' we seem to lose the data sent to the apache-server, at
> > > least it never reaches our module.
> >
> > <SNIP>
> >
> > > Recently we switched from using the standard Apache request-object to
> > > using the Apache::Request one, for the added functionality, but this has
> > > not had any effect at all as far as we can tell, and the bug keeps
> > > happening...
> >
> > I ran into a problem that the param parts of a request were flushed
> > when read for the first time... so if you lose them (don't store them)
> > then you cannot access them again.
>
> Yep, noticed this myself when re-writing it to check the input, should
> have posted this first perhaps, but anyway, this is basically how we
> handle the input:
>
> sub handler($)
> {
> $^W = 1; # gripe about the little things
> my $r = shift;
> my %parm;
>
> if ($r->method() eq 'POST') { %parm = $r->content(); }
> elsif ($r->method() eq 'GET') { %parm = $r->args(); }
>
> <snipped lots of more code>
>
> And now, after the re-write with Apache::Request
>
> sub handler($)
> {
> $^W = 1; # gripe about the little things
> my $r = shift;
> my $apr;
> my %parm;
>
> $apr = Apache::Request->new($r);
>
> if($r->method() eq 'POST' || $r->method() eq 'GET')
> {
> my @keys = $apr->param();
>
> foreach my $key (@keys)
> {
> $parm{$key} = $apr->param($key);
> }
> }
>
> <snip of the same lots of more code>
>
> So.. I can't really see how that would make us lose the parameters,
> especially since we doesn't lose them all the time, which was the case
> when I tried to get the same value twice...
>
>
> [Back to Wes]
> > If you are not already, then try
> >
> > $apr = HTTP::Request->instance($r); instead...
> >
>
> We use ->new now. Since we always only create one instance of it I
> thought there was no difference. Is instance known to be safer or so?
>
> Also got the hint that this could somehow be connected to caching, but
> since we when we output debug-messages see that handler() is called, with
> no parameters in $r, I don't see how this could be. Any comments, and
> suggestions of fix if this might be the problem?
>
> Thanks again,
> Hakan
>
> ([EMAIL PROTECTED])
>
> -
> Hi! I'm a .signature virus!
> Copy me into your .signature file to help me spread!
>
--
Nigel Hamilton
Turbo10 Metasearch Engine
email: [EMAIL PROTECTED]
tel: +44 (0) 207 987 5460
fax: +44 (0) 207 987 5468
________________________________________________________________________________
http://turbo10.com Search Deeper. Browse Faster.