On Fri, 8 Feb 2002 02:42:31 +0000 (GMT), Ged Haywood wrote:

>Hi again

>> Could you give me the specific jump tag for the section you are refering to 
please?
>
>
>=head3 Reloading Configuration Files

Ged,

   I read this over.  It does not directly address the issue that I brought up 
in my original email.  This discussed the loading and compilation of code.  I 
recognise and acknowledge that one of the main points of mod_perl is that the 
code does not need to be recompiled from invocation to invocation.  This, 
however, is not the point of my message.

   My message is about data space.  The data space for the modules does not 
seem to be recreated or reinitialized (BEGIN blocks are not rerun) from one 
invocation of a script to another.  This has some rather serious, if not 
downright disturbing consequences.  The equating of my bug report with module 
loading and query retrieval implies a number of things.

   Specifically, based on the above referenced guide text, module CGI.pm is not 
reloaded by the server from invocation to invocation.  A good thing, for the 
most part.  The problem comes when a child server does not die between client 
services on a busy server.  Unless mod_perl is specifically working around it, 
this implies that the global data space for CGI.pm is not cleared and therefore 
is available to the next caller.

   IE, client1 comes and executes /cgi-bin/login with a particular set of POST 
parameters (his name/password).  If the child which serviced client1 does not 
exit and client2 comes along and tries to execute /cgi-bin/login within the 
same child, he would presumably get logged in with the name/pwd that were 
supplied by client1.

   VERY BAD.

   If this is not the case, mod_perl has a work-around built into it that 
clears out the data space of precompiled modules for each external request.  If 
that work around is coded into mod_perl, I am saying that there is a bug in 
that it (if such a work around does exist) is not being executed by 
sub-requests made from the initial request.  There is no reason that the same 
data space clearing should not take place for a sub-request as would be done 
for an outside request.

   If I had the familiarity with the code and the time, I would dig into the 
source some and see what I could find in terms of code which is related to this 
issue but I really don't have either right now.  I would strongly suggest that 
someone who is familiar with the code involved in this part of mod_perl, 
Apache.pm and CGI.pm take a hard look at this because, IMHO, it has some 
serious implications.

   Michael


Reply via email to