cvs commit: modperl-2.0/src/modules/perl mod_perl.c modperl_callback.c modperl_callback.h modperl_types.h
dougm 02/02/20 17:45:34 Modified:lib/ModPerl Code.pm src/modules/perl mod_perl.c modperl_callback.c modperl_callback.h modperl_types.h Log: adjust to pre_connection hook prototype change. not supporting PreConnection handler for the moment. Revision ChangesPath 1.75 +8 -2 modperl-2.0/lib/ModPerl/Code.pm Index: Code.pm === RCS file: /home/cvs/modperl-2.0/lib/ModPerl/Code.pm,v retrieving revision 1.74 retrieving revision 1.75 diff -u -r1.74 -r1.75 --- Code.pm 18 Dec 2001 05:58:54 - 1.74 +++ Code.pm 21 Feb 2002 01:45:34 - 1.75 @@ -18,7 +18,8 @@ Access Authen Authz Type Fixup Response Log InputFilter OutputFilter)], #Init Cleanup -Connection => [qw(PreConnection ProcessConnection)], +Connection => [qw(ProcessConnection)], +PreConnection => [qw(PreConnection)], ); my %hooks = map { $_, canon_lc($_) } @@ -47,6 +48,11 @@ ret => 'int', args => [{type => 'conn_rec', name => 'c'}], }, +PreConnection => { +ret => 'int', +args => [{type => 'conn_rec', name => 'c'}, + {type => 'void', name => 'csd'}], +}, ); $hook_proto{PerDir} = $hook_proto{PerSrv}; @@ -73,7 +79,7 @@ }, ); -for my $class (qw(Process Connection Files)) { +for my $class (qw(Process Connection PreConnection Files)) { $directive_proto{$class}->{cfg}->{name} = 'scfg'; $directive_proto{$class}->{cfg}->{get} = $scfg_get; 1.106 +1 -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.105 retrieving revision 1.106 diff -u -r1.105 -r1.106 --- mod_perl.c18 Jan 2002 06:50:10 - 1.105 +++ mod_perl.c21 Feb 2002 01:45:34 - 1.106 @@ -414,7 +414,7 @@ */ } -static int modperl_hook_pre_connection(conn_rec *c) +static int modperl_hook_pre_connection(conn_rec *c, void *csd) { modperl_input_filter_register_connection(c); modperl_output_filter_register_connection(c); 1.48 +5 -0 modperl-2.0/src/modules/perl/modperl_callback.c Index: modperl_callback.c === RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_callback.c,v retrieving revision 1.47 retrieving revision 1.48 diff -u -r1.47 -r1.48 --- modperl_callback.c24 Nov 2001 01:15:01 - 1.47 +++ modperl_callback.c21 Feb 2002 01:45:34 - 1.48 @@ -217,6 +217,11 @@ NULL, NULL, NULL); } +int modperl_callback_pre_connection(int idx, conn_rec *c, void *csd) +{ +return DECLINED; /*XXX*/ +} + void modperl_callback_process(int idx, apr_pool_t *p, server_rec *s) { modperl_callback_run_handlers(idx, MP_HANDLER_TYPE_PROCESS, 1.21 +2 -0 modperl-2.0/src/modules/perl/modperl_callback.h Index: modperl_callback.h === RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_callback.h,v retrieving revision 1.20 retrieving revision 1.21 diff -u -r1.20 -r1.21 --- modperl_callback.h24 Nov 2001 01:15:01 - 1.20 +++ modperl_callback.h21 Feb 2002 01:45:34 - 1.21 @@ -25,6 +25,8 @@ int modperl_callback_connection(int idx, conn_rec *c); +int modperl_callback_pre_connection(int idx, conn_rec *c, void *csd); + void modperl_callback_process(int idx, apr_pool_t *p, server_rec *s); int modperl_callback_files(int idx, 1.56 +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.55 retrieving revision 1.56 diff -u -r1.55 -r1.56 --- modperl_types.h 6 Jan 2002 20:45:36 - 1.55 +++ modperl_types.h 21 Feb 2002 01:45:34 - 1.56 @@ -119,6 +119,7 @@ MpAV *handlers_per_srv[MP_HANDLER_NUM_PER_SRV]; MpAV *handlers_files[MP_HANDLER_NUM_FILES]; MpAV *handlers_process[MP_HANDLER_NUM_PROCESS]; +MpAV *handlers_pre_connection[MP_HANDLER_NUM_PRE_CONNECTION]; MpAV *handlers_connection[MP_HANDLER_NUM_CONNECTION]; int threaded_mpm; #ifdef USE_ITHREADS
cvs commit: modperl-2.0/src/modules/perl mod_perl.c modperl_callback.c modperl_callback.h
dougm 01/03/15 21:08:15 Modified:lib/ModPerl Code.pm src/modules/perl mod_perl.c modperl_callback.c modperl_callback.h Log: use proper prefix for all modperl_callback_ functions Revision ChangesPath 1.46 +1 -1 modperl-2.0/lib/ModPerl/Code.pm Index: Code.pm === RCS file: /home/cvs/modperl-2.0/lib/ModPerl/Code.pm,v retrieving revision 1.45 retrieving revision 1.46 diff -u -r1.45 -r1.46 --- Code.pm 2001/03/16 04:58:57 1.45 +++ Code.pm 2001/03/16 05:08:15 1.46 @@ -167,7 +167,7 @@ my @register_hooks; while (my($class, $prototype) = each %{ $self->{hook_proto} }) { -my $callback = canon_func($class, 'callback'); +my $callback = canon_func('callback', $class); my $return = $prototype->{ret} eq 'void' ? '' : 'return'; my $i = -1; 1.37 +1 -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.36 retrieving revision 1.37 diff -u -r1.36 -r1.37 --- mod_perl.c2001/03/15 04:34:04 1.36 +++ mod_perl.c2001/03/16 05:08:15 1.37 @@ -286,7 +286,7 @@ modperl_response_init(r); -retval = modperl_per_dir_callback(MP_RESPONSE_HANDLER, r); +retval = modperl_callback_per_dir(MP_RESPONSE_HANDLER, r); if ((retval == DECLINED) && r->content_type) { r->handler = r->content_type; /* let http_core or whatever try */ 1.31 +21 -16modperl-2.0/src/modules/perl/modperl_callback.c Index: modperl_callback.c === RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_callback.c,v retrieving revision 1.30 retrieving revision 1.31 diff -u -r1.30 -r1.31 --- modperl_callback.c2001/03/16 04:58:58 1.30 +++ modperl_callback.c2001/03/16 05:08:15 1.31 @@ -91,8 +91,8 @@ return status; } -int modperl_run_handlers(int idx, request_rec *r, conn_rec *c, - server_rec *s, int type, ...) +int modperl_callback_run_handlers(int idx, request_rec *r, conn_rec *c, + server_rec *s, int type, ...) { #ifdef USE_ITHREADS pTHX; @@ -230,33 +230,38 @@ return status; } -int modperl_per_dir_callback(int idx, request_rec *r) +int modperl_callback_per_dir(int idx, request_rec *r) { -return modperl_run_handlers(idx, r, NULL, r->server, -MP_HANDLER_TYPE_PER_DIR); +return modperl_callback_run_handlers(idx, r, NULL, + r->server, + MP_HANDLER_TYPE_PER_DIR); } -int modperl_per_srv_callback(int idx, request_rec *r) +int modperl_callback_per_srv(int idx, request_rec *r) { -return modperl_run_handlers(idx, r, NULL, r->server, -MP_HANDLER_TYPE_PER_SRV); +return modperl_callback_run_handlers(idx, r, NULL, + r->server, + MP_HANDLER_TYPE_PER_SRV); } -int modperl_connection_callback(int idx, conn_rec *c) +int modperl_callback_connection(int idx, conn_rec *c) { -return modperl_run_handlers(idx, NULL, c, c->base_server, -MP_HANDLER_TYPE_CONNECTION); +return modperl_callback_run_handlers(idx, NULL, c, + c->base_server, + MP_HANDLER_TYPE_CONNECTION); } -void modperl_process_callback(int idx, apr_pool_t *p, server_rec *s) +void modperl_callback_process(int idx, apr_pool_t *p, server_rec *s) { -modperl_run_handlers(idx, NULL, NULL, s, MP_HANDLER_TYPE_PROCESS, p); +modperl_callback_run_handlers(idx, NULL, NULL, s, + MP_HANDLER_TYPE_PROCESS, p); } -void modperl_files_callback(int idx, +void modperl_callback_files(int idx, apr_pool_t *pconf, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *s) { -modperl_run_handlers(idx, NULL, NULL, s, MP_HANDLER_TYPE_FILES, - pconf, plog, ptemp); +modperl_callback_run_handlers(idx, NULL, NULL, s, + MP_HANDLER_TYPE_FILES, + pconf, plog, ptemp); } 1.17 +9 -9 modperl-2.0/src/modules/perl/modperl_callback.h Index: modperl_callback.h === RCS file: /home/cvs/modperl-2.0/src/modules/per
cvs commit: modperl-2.0/src/modules/perl mod_perl.c modperl_callback.c modperl_callback.h modperl_config.c modperl_config.h modperl_interp.c modperl_interp.h modperl_types.h
dougm 00/04/27 14:42:26 Modified:lib/ModPerl Code.pm src/modules/perl mod_perl.c modperl_callback.c modperl_callback.h modperl_config.c modperl_config.h modperl_interp.c modperl_interp.h modperl_types.h Log: stash selected interp object in the given pool (c->pool or r->pool), rather than r->request_config, required for Perl*ConnectionHandlers hookup PerlOpenLogsHandler and PerlChildInitHandler Revision ChangesPath 1.19 +16 -7 modperl-2.0/lib/ModPerl/Code.pm Index: Code.pm === RCS file: /home/cvs/modperl-2.0/lib/ModPerl/Code.pm,v retrieving revision 1.18 retrieving revision 1.19 diff -u -r1.18 -r1.19 --- Code.pm 2000/04/26 07:29:24 1.18 +++ Code.pm 2000/04/27 21:42:24 1.19 @@ -8,7 +8,7 @@ #XXX Init, PreConfig my %handlers = ( Process=> [qw(ChildInit ChildExit Restart)], -Files => [qw(OpenLog PostConfig)], +Files => [qw(OpenLogs PostConfig)], PerSrv => [qw(PostReadRequest Trans)], PerDir => [qw(HeaderParser Access Authen Authz @@ -30,6 +30,8 @@ Log => 'log_transaction', PreConnection => 'pre_connection', ProcessConnection => 'process_connection', +OpenLogs => 'open_logs', +ChildInit => 'child_init', ); my %hook_proto = ( @@ -60,13 +62,14 @@ my $dcfg_get = 'modperl_dir_config_t *dcfg = (modperl_dir_config_t *)dummy'; +my $scfg_get = 'MP_dSCFG(parms->server)'; + my %directive_proto = ( PerSrv => { args => [{type => 'cmd_parms', name => 'parms'}, {type => 'void', name => 'dummy'}, {type => 'char', name => 'arg'}], -cfg => {get => 'MP_dSCFG(parms->server)', - name => 'scfg'}, +cfg => {get => $scfg_get, name => 'scfg'}, scope => 'RSRC_CONF', }, PerDir => { @@ -78,12 +81,18 @@ }, ); -while (my($k,$v) = each %directive_proto) { -$directive_proto{$k}->{ret} = 'const char *'; +for my $class (qw(Process Connection Files)) { +my $lc_class = lc $class; +$directive_proto{$class}->{cfg}->{name} = "scfg->${lc_class}_cfg"; +$directive_proto{$class}->{cfg}->{get} = $scfg_get; + +for (qw(args scope)) { +$directive_proto{$class}->{$_} = $directive_proto{PerSrv}->{$_}; +} } -for (qw(Process Connection Files)) { -$directive_proto{$_} = $directive_proto{PerSrv}; +while (my($k,$v) = each %directive_proto) { +$directive_proto{$k}->{ret} = 'const char *'; } my %flags = ( 1.12 +1 -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.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- mod_perl.c2000/04/26 07:29:25 1.11 +++ mod_perl.c2000/04/27 21:42:25 1.12 @@ -61,7 +61,7 @@ void modperl_register_hooks(void) { /* XXX: should be pre_config hook or 1.xx logic */ -ap_hook_open_logs(modperl_hook_init, NULL, NULL, AP_HOOK_MIDDLE); +ap_hook_open_logs(modperl_hook_init, NULL, NULL, AP_HOOK_FIRST); modperl_register_handler_hooks(); } 1.6 +52 -24modperl-2.0/src/modules/perl/modperl_callback.c Index: modperl_callback.c === RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_callback.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- modperl_callback.c2000/04/25 05:57:48 1.5 +++ modperl_callback.c2000/04/27 21:42:25 1.6 @@ -39,8 +39,7 @@ ap_status_t modperl_handler_cleanup(void *data) { modperl_handler_t *handler = (modperl_handler_t *)data; -dTHXa(handler->perl); -modperl_handler_unparse(aTHX_ handler); +modperl_handler_unparse(handler); return APR_SUCCESS; } @@ -112,8 +111,9 @@ return 0; } -void modperl_handler_unparse(pTHX_ modperl_handler_t *handler) +void modperl_handler_unparse(modperl_handler_t *handler) { +dTHXa(handler->perl); int was_parsed = handler->args || handler->cv || handler->obj; if (!MpHandlerPARSED(handler)) { @@ -153,6 +153,10 @@ char *tmp; CV *cv; +#ifdef USE_ITHREADS +handler->perl = aTHX; +#endif + if (strnEQ(name, "sub ", 4)) { handler->cv = eval_pv(name, FALSE); MP_TRACE_h(MP_FUNC, "handler is anonymous\n"); @@ -279,27 +283,46 @@ #define MP_HANDLER_TYPE_DIR 1 #define MP_HANDLER_TYPE_SRV 2 +#define MP_HANDLER_TYPE_CONN 3 +#define MP_H