stas        2003/09/18 00:55:53

  Modified:    src/modules/perl modperl_handler.c
  Log:
  mod_perl handler must be dupped for any mpm which runs within USE_ITHREAD.
  Untill now there was a big problem with prefork mpm if any of its vhosts
  was using PerlOptions +(Parent|Clone) and happened to load handlers before
  the main server. When that was happening the main server will see that the
  handler was resolved (since it sees the handler struct from the vhost that
  loaded this module, instead of its own), which in fact it wasn't, causing
  the failure to run the handler with the infamous 'Not a CODE reference'
  error
  
  Revision  Changes    Path
  1.19      +6 -9      modperl-2.0/src/modules/perl/modperl_handler.c
  
  Index: modperl_handler.c
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_handler.c,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -u -r1.18 -r1.19
  --- modperl_handler.c 18 Sep 2003 07:51:29 -0000      1.18
  +++ modperl_handler.c 18 Sep 2003 07:55:52 -0000      1.19
  @@ -34,15 +34,12 @@
   
   #ifdef USE_ITHREADS
       if (p && !MpHandlerPARSED(handler) && !MpHandlerDYNAMIC(handler)) {
  -        MP_dSCFG(s);
  -        if (scfg->threaded_mpm) {
  -            /*
  -             * cannot update the handler structure at request time without
  -             * locking, so just copy it
  -             */
  -            handler = *handp = modperl_handler_dup(p, handler);
  -            duped = 1;
  -        }
  +        /*
  +         * cannot update the handler structure at request time without
  +         * locking, so just copy it
  +         */
  +        handler = *handp = modperl_handler_dup(p, handler);
  +        duped = 1;
       }
   #endif
   
  
  
  

Reply via email to