dougm 2002/06/20 21:16:51 Modified: src/modules/perl mod_perl.c modperl_interp.c Log: move modperl_pp_{set,unset}_all and modperl_init_{init,unload} to modperl_sys_{init,term} functions that only happen once per-parent process Revision Changes Path 1.128 +16 -5 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.127 retrieving revision 1.128 diff -u -r1.127 -r1.128 --- mod_perl.c 21 Jun 2002 00:44:24 -0000 1.127 +++ mod_perl.c 21 Jun 2002 04:16:51 -0000 1.128 @@ -202,10 +202,6 @@ return; } - modperl_perl_pp_set_all(); - - modperl_env_init(); - base_perl = modperl_startup(base_server, p); #ifdef USE_ITHREADS @@ -330,6 +326,10 @@ modperl_tls_create_request_rec(pconf); } +/* + * modperl_sys_{init,term} are things that happen + * once per-parent process, not per-interpreter + */ static apr_status_t modperl_sys_init(void) { #if 0 /*XXX*/ @@ -345,11 +345,22 @@ } #endif #endif + + /* modifies PL_ppaddr */ + modperl_perl_pp_set_all(); + + /* modifies PL_vtbl_env{elem} */ + modperl_env_init(); + return APR_SUCCESS; } static apr_status_t modperl_sys_term(void *data) { + modperl_env_unload(); + + modperl_perl_pp_unset_all(); + #if 0 /*XXX*/ PERL_SYS_TERM(); #endif @@ -362,7 +373,7 @@ apr_pool_create(&server_pool, pconf); modperl_sys_init(); - apr_pool_cleanup_register(server_pool, NULL, + apr_pool_cleanup_register(pconf, NULL, modperl_sys_term, apr_pool_cleanup_null); modperl_init_globals(s, pconf); modperl_init(s, pconf); 1.50 +0 -4 modperl-2.0/src/modules/perl/modperl_interp.c Index: modperl_interp.c =================================================================== RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_interp.c,v retrieving revision 1.49 retrieving revision 1.50 diff -u -r1.49 -r1.50 --- modperl_interp.c 21 Jun 2002 03:46:46 -0000 1.49 +++ modperl_interp.c 21 Jun 2002 04:16:51 -0000 1.50 @@ -152,10 +152,6 @@ modperl_interp_destroy(mip->parent); } - modperl_env_unload(); - - modperl_perl_pp_unset_all(); - return APR_SUCCESS; }