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
}