dougm       00/06/12 11:20:55

  Modified:    src/modules/perl mod_perl.c
  Log:
  make sure vhost config points to a mip
  
  Revision  Changes    Path
  1.16      +23 -16    modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- mod_perl.c        2000/06/12 03:30:51     1.15
  +++ mod_perl.c        2000/06/12 18:20:55     1.16
  @@ -42,39 +42,38 @@
       return perl;
   }
   
  -void modperl_init(server_rec *s, ap_pool_t *p)
  +void modperl_init(server_rec *base_server, ap_pool_t *p)
   {
  -    server_rec *base_server = s;
  -    server_rec *srvp;
  +    server_rec *s;
  +    modperl_srv_config_t *base_scfg =
  +      (modperl_srv_config_t *)
  +        ap_get_module_config(base_server->module_config, &perl_module);
       PerlInterpreter *base_perl = modperl_startup(base_server, p);
  -    modperl_interp_init(base_server, p, base_perl);
   
  -    {
  -        MP_dSCFG(base_server);
  -        MpInterpBASE_On(scfg->mip->parent);
  -    }
  +    modperl_interp_init(base_server, p, base_perl);
  +    MpInterpBASE_On(base_scfg->mip->parent);
   
  -    for (srvp=base_server->next; srvp; srvp=srvp->next) {
  -        MP_dSCFG(srvp);
  +    for (s=base_server->next; s; s=s->next) {
  +        MP_dSCFG(s);
           PerlInterpreter *perl = base_perl;
   
           if (1) {
               /* XXX: using getenv() just for testing here */
               char *do_alloc = getenv("MP_SRV_ALLOC_TEST");
               char *do_clone = getenv("MP_SRV_CLONE_TEST");
  -            if (do_alloc && strEQ(do_alloc, srvp->server_hostname)) {
  +            if (do_alloc && strEQ(do_alloc, s->server_hostname)) {
                   MpSrvPERL_ALLOC_On(scfg);
               }
  -            if (do_clone && strEQ(do_clone, srvp->server_hostname)) {
  +            if (do_clone && strEQ(do_clone, s->server_hostname)) {
                   MpSrvPERL_CLONE_On(scfg);
               }
           }
   
           /* if alloc flags is On, virtual host gets its own parent perl */
           if (MpSrvPERL_ALLOC(scfg)) {
  -            perl = modperl_startup(srvp, p);
  +            perl = modperl_startup(s, p);
               MP_TRACE_i(MP_FUNC, "modperl_startup() server=%s\n",
  -                       srvp->server_hostname);
  +                       s->server_hostname);
           }
   
   #ifdef USE_ITHREADS
  @@ -83,13 +82,21 @@
            */
           if (MpSrvPERL_ALLOC(scfg) || MpSrvPERL_CLONE(scfg)) {
               MP_TRACE_i(MP_FUNC, "modperl_interp_init() server=%s\n",
  -                       srvp->server_hostname);
  -            modperl_interp_init(srvp, p, perl);
  +                       s->server_hostname);
  +            modperl_interp_init(s, p, perl);
           }
   
           /* if we allocated a parent perl, mark it to be destroyed */
           if (MpSrvPERL_ALLOC(scfg)) {
               MpInterpBASE_On(scfg->mip->parent);
  +        }
  +
  +        if (!scfg->mip) {
  +            /* since mips are created after merge_server_configs()
  +             * need to point to the base mip here if this vhost
  +             * doesn't have its own
  +             */
  +            scfg->mip = base_scfg->mip;
           }
   #endif
       }
  
  
  

Reply via email to