dougm 01/09/27 16:29:51 Modified: src/modules/perl mod_perl.c modperl_config.c modperl_env.c modperl_env.h modperl_options.c modperl_types.h Log: change apr_pool_cleanup_register() to use apr_pool_cleanup_null for child cleanup, rather than NULL which will segv if apache forks (e.g. mod_cgi) Revision Changes Path 1.78 +2 -1 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.77 retrieving revision 1.78 diff -u -r1.77 -r1.78 --- mod_perl.c 2001/09/27 19:41:44 1.77 +++ mod_perl.c 2001/09/27 23:29:51 1.78 @@ -291,7 +291,8 @@ apr_pool_t *ptemp, server_rec *s) { modperl_sys_init(); - apr_pool_cleanup_register(pconf, NULL, modperl_sys_term, NULL); + apr_pool_cleanup_register(pconf, NULL, + modperl_sys_term, apr_pool_cleanup_null); modperl_init_globals(s, pconf); modperl_init(s, pconf); } 1.39 +0 -2 modperl-2.0/src/modules/perl/modperl_config.c Index: modperl_config.c =================================================================== RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_config.c,v retrieving revision 1.38 retrieving revision 1.39 diff -u -r1.38 -r1.39 --- modperl_config.c 2001/09/27 19:55:47 1.38 +++ modperl_config.c 2001/09/27 23:29:51 1.39 @@ -9,8 +9,6 @@ dcfg->interp_scope = MP_INTERP_SCOPE_UNDEF; #endif - MpDirSETUP_ENV_On(dcfg); /* %ENV setup on by default */ - return dcfg; } 1.6 +5 -2 modperl-2.0/src/modules/perl/modperl_env.c Index: modperl_env.c =================================================================== RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_env.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- modperl_env.c 2001/09/27 21:19:42 1.5 +++ modperl_env.c 2001/09/27 23:29:51 1.6 @@ -36,7 +36,7 @@ { NULL } }; -static void modperl_env_request_populate(pTHX_ request_rec *r) +void modperl_env_request_populate(pTHX_ request_rec *r) { HV *hv = GvHV(PL_envgv); int i; @@ -102,11 +102,14 @@ } #endif +#define MpDirSeenSETUP_ENV(dcfg) \ + (dcfg->flags->opts_seen & MpDir_f_SETUP_ENV) + void modperl_env_request_tie(pTHX_ request_rec *r) { MP_dDCFG; - if (MpDirSETUP_ENV(dcfg)) { + if (MpDirSETUP_ENV(dcfg) || !MpDirSeenSETUP_ENV(dcfg)) { modperl_env_request_populate(aTHX_ r); } 1.2 +3 -0 modperl-2.0/src/modules/perl/modperl_env.h Index: modperl_env.h =================================================================== RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_env.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- modperl_env.h 2001/05/08 04:10:41 1.1 +++ modperl_env.h 2001/09/27 23:29:51 1.2 @@ -8,7 +8,10 @@ #define modperl_env_tie(mg_flags) \ SvFLAGS((SV*)GvHV(PL_envgv)) |= mg_flags +void modperl_env_request_populate(pTHX_ request_rec *r); + void modperl_env_request_tie(pTHX_ request_rec *r); + void modperl_env_request_untie(pTHX_ request_rec *r); #endif /* MODPERL_ENV_H */ 1.8 +4 -0 modperl-2.0/src/modules/perl/modperl_options.c Index: modperl_options.c =================================================================== RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_options.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- modperl_options.c 2001/05/09 17:04:31 1.7 +++ modperl_options.c 2001/09/27 23:29:51 1.8 @@ -82,6 +82,8 @@ } #endif + o->opts_seen |= opt; + if (action == '-') { o->opts_remove |= opt; o->opts_add &= ~opt; @@ -125,6 +127,8 @@ conf->opts_add = add->opts_add; conf->opts_remove = add->opts_remove; } + + conf->opts_seen |= add->opts_seen; return conf; } 1.48 +1 -0 modperl-2.0/src/modules/perl/modperl_types.h Index: modperl_types.h =================================================================== RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_types.h,v retrieving revision 1.47 retrieving revision 1.48 diff -u -r1.47 -r1.48 --- modperl_types.h 2001/09/27 19:04:38 1.47 +++ modperl_types.h 2001/09/27 23:29:51 1.48 @@ -98,6 +98,7 @@ modperl_opts_t opts_add; modperl_opts_t opts_remove; modperl_opts_t opts_override; + modperl_opts_t opts_seen; int unset; } modperl_options_t;