Hi,
I'm using a CGI script which makes a call to raw_cookie(). When I run in CGI
mode everything works fine, and the cookie which matches $ENV{HTTP_COOKIE}
is returned.
When I run in mod_perl though, a cookie from a previous CGI instance is
returned. I took a look at CGI.pm to see what's going on and it has (my
comment added for emphasis):
sub raw_cookie {
my($self,$key) = self_or_CGI(@_);
require CGI::Cookie;
if (defined($key)) {
# *************** Here is my problem ***********************
# this fetch does not get executed because the
#self->{'.raw_cookies'} already exists
$self->{'.raw_cookies'} = CGI::Cookie->raw_fetch unless
$self->{'.raw_cookies'};
return () unless $self->{'.raw_cookies'};
return () unless $self->{'.raw_cookies'}->{$key};
return $self->{'.raw_cookies'}->{$key};
}
return $self->http('cookie') || $ENV{'COOKIE'} || '';
}
So I put some warns in here, and sure enough when it gets the wrong info,
$self->{'.raw_cookies'} already exists.
I've skimmed the documentation, particularly Mr. Beckman's stuff which I
think is quite good. The only thing I see which seems relevant is the page
about using PerlPostReadRequestHandler
http://thingy.kcilink.com/modperlguide/troubleshooting/Can_t_call_method_reg
ister_clea.html
but I don't get the error message specified, and I tried recompiling with
PERL_POST_READ_REQUEST=1 and setting the handler in httpd.conf.but that
seems ed to have no effect.
I realize I can simply call CGI::Cookie->raw_fetch() myself, but it bothers
me that there is some kind of persistence going on which probably is an
indicator that I'll be hosed in some other way once I get around this
problem.
Help please...
Thanks,
Lance