Hi,
Can someone help me out here?
Apache_1.3.12
mod_perl 1.21_03
Apache-Session-1.03 ( Database and deamon locker for storing and locking
sessions )
-- code snippet --
sub getSESSION {
my $self = shift;
my $sid = shift;
my %SESSION;
eval {tie %SESSION, 'Apache::Session::DBI', $sid;} if ($sid);
if (! $sid || $@ ) {
eval {tie %SESSION, 'Apache::Session::DBI', undef;};
}
return \%SESSION;
}
So if I pass what I know to be a bogus non-null session id (no longer a
valid id in the database) it tries the first eval. Based on my understanding
of the Apache::Session docs, it should die (shouldn't it?), which should
result in $@ being non-null and the first eval should return undef. Then I
should be able to call another eval block requesting a new session.
Is this right and if so, why am I getting the following messages in the log
file?
panic: POPSTACK
Callback called exit.
for each httpd process.
I looked at the eval documentation and I've tried using Carp, localizing
$SIG{__DIE__) within the eval, but at this point I'm utterly confused and am
not sure what is really the cause of the problem. I think that it has
something to do with the way perl's die function is being called within this
eval because I don't have this problem when the session id I pass is a valid
one.
Help.
thank you,
Sang