cvs commit: modperl-2.0/xs/maps apr_functions.map apr_structures.map apr_types.map
dougm 01/03/15 16:01:39 Modified:xs/maps apr_functions.map apr_structures.map apr_types.map Log: add new apr_ipsubnet_ functions Revision ChangesPath 1.4 +5 -1 modperl-2.0/xs/maps/apr_functions.map Index: apr_functions.map === RCS file: /home/cvs/modperl-2.0/xs/maps/apr_functions.map,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- apr_functions.map 2001/03/13 05:25:11 1.3 +++ apr_functions.map 2001/03/16 00:01:36 1.4 @@ -327,11 +327,15 @@ apr_get_user_passwd apr_get_userid -!MODULE=APR::NetworkIO +MODULE=APR::NetLib apr_gethostname apr_getnameinfo -apr_getservbyname apr_parse_addr_port +PACKAGE=guess + apr_ipsubnet_t *:apr_ipsubnet_create | mpxs_ | \ + SV *:CLASS, p, ipstr, mask_or_numbits=NULL | new + apr_ipsubnet_test !MODULE=APR::Getopt apr_getopt 1.2 +1 -1 modperl-2.0/xs/maps/apr_structures.map Index: apr_structures.map === RCS file: /home/cvs/modperl-2.0/xs/maps/apr_structures.map,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- apr_structures.map2001/03/05 03:49:21 1.1 +++ apr_structures.map2001/03/16 00:01:37 1.2 @@ -2,7 +2,7 @@ IGNORE: apr_pool_t apr_os_ apr_vformatter_buff_t apr_pool_t \ apr_table_t apr_in_addr_t apr_bucket_ apr_md5_ctx_t apr_sha1_ctx_t \ -apr_uuid_t apr_datum_t apr_mmap_t apr_hdtr_t +apr_uuid_t apr_datum_t apr_mmap_t apr_hdtr_t apr_ipsubnet_t #buckets 1.2 +3 -0 modperl-2.0/xs/maps/apr_types.map Index: apr_types.map === RCS file: /home/cvs/modperl-2.0/xs/maps/apr_types.map,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- apr_types.map 2001/03/05 03:49:21 1.1 +++ apr_types.map 2001/03/16 00:01:37 1.2 @@ -15,6 +15,9 @@ apr_shutdown_how_e | UNDEFINED apr_interface_e | UNDEFINED +#netlib stuff +struct apr_ipsubnet_t | APR::IpSubnet + #bucket stuff struct apr_bucket | APR::Bucket struct apr_bucket_brigade | APR::Brigade
cvs commit: modperl-2.0/xs/APR/NetLib APR__NetLib.h
dougm 01/03/15 16:02:50 Added: xs/APR/NetLib APR__NetLib.h Log: wrapper for apr_ipsubnet_create() Revision ChangesPath 1.1 modperl-2.0/xs/APR/NetLib/APR__NetLib.h Index: APR__NetLib.h === static MP_INLINE apr_ipsubnet_t *mpxs_apr_ipsubnet_create(pTHX_ SV *classname, apr_pool_t *p, const char *ipstr, const char *mask_or_numbits) { apr_status_t status; apr_ipsubnet_t *ipsub = NULL; status = apr_ipsubnet_create(ipsub, ipstr, mask_or_numbits, p); return ipsub; }
Sites running mod_perl
I was just visiting the comanche site and saw a list of mod_perl applications. Just thought I'd share with you a few sites that I have created using mod_perl. Note: these are all on the same quad-P3 server and receive together over 5,000 uniques per day. We could not handle this kind of load without a stable, powerful language like mod_perl. 1. iceBase.com - a template-driven website builder and HTML email campaign manager (rebranded under CoolerEmail.com and eKwiq.com) 2. ArtRover.com - over 120,000 fully indexed works of art from over 20 different databases integrated together using SQL, performs the actual search in under a second, and then goes out to each of the participating companies' servers to bring in the images for that art 3. JustOriginals.com - over 9,000 fully indexed works of art, completes searches in about 200 ms Just thought I'd let you know that I appreciate all the work you guys have put into the software and that it has formed the basis for our business. -- Lars Helgeson President/CEO Sirius Technologies Inc. iceBase.com iceBase.com - Empower Yourself Build Your Own Websites and Electronic Newsletters in Minutes
cvs commit: modperl-2.0/lib/Apache SourceTables.pm
dougm 01/03/15 18:30:47 Added: lib/Apache SourceTables.pm Log: module to include the generated source tables and build hash versions of each Revision ChangesPath 1.1 modperl-2.0/lib/Apache/SourceTables.pm Index: SourceTables.pm === package Apache::SourceTables; use Apache::StructureTable (); use Apache::FunctionTable (); #build hash versions of the tables %Apache::StructureTable = map { $_-{type}, $_-{elts} } @$Apache::StructureTable; %Apache::FunctionTable = map { $_-{name}, {elts = $_-{elts}, return_type = $_-{return_type} } } @$Apache::FunctionTable; 1; __END__
cvs commit: modperl-2.0/util apr_pool_check.pl
dougm 01/03/15 18:32:44 Added: util apr_pool_check.pl Log: script to check which apr_ functions do not have access to a pool Revision ChangesPath 1.1 modperl-2.0/util/apr_pool_check.pl Index: apr_pool_check.pl === #check which apr_ functions do not have access to a pool use lib qw(lib); use strict; use Apache::SourceTables (); my($functions, @nopool); #incomplete types (C::Scan only scans *.h, not *.c) we know have an apr_pool_t my %private = map { $_, 1 } qw{ apr_dir_t apr_file_t apr_dso_handle_t apr_hash_t apr_hash_index_t apr_lock_t apr_socket_t apr_pollfd_t apr_threadattr_t apr_thread_t apr_threadkey_t apr_procattr_t apr_xlate_t apr_dbm_t apr_xml_parser }; for my $entry (@$Apache::FunctionTable) { next unless $entry-{name} =~ /^apr_/; $functions++; unless (grep { find_pool($_-{type}) } @{ $entry-{args} }) { push @nopool, $entry; } } my $num_nopool = @nopool; print "$num_nopool functions (out of $functions) do not have access to a pool:\n\n"; for my $entry (@nopool) { print "$entry-{return_type} $entry-{name}(", (join ', ', map "$_-{type} $_-{name}", @{ $entry-{args} }), ")\n\n"; } sub find_pool { my $type = shift; return 1 if $type =~ /^apr_pool_t/; $type =~ s/\s+\*+$//; $type =~ s/^(const|struct)\s+//g; if (my $elts = $Apache::StructureTable{$type}) { return 1 if $private{$type}; for my $e (@$elts) { next if $e-{type} =~ /^$type/; return 1 if find_pool($e-{type}); } } }
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:
cvs commit: modperl-2.0/src/modules/perl modperl_cmd.c modperl_cmd.h mod_perl.c mod_perl.h modperl_config.c modperl_config.h modperl_interp.c modperl_interp.h
dougm 01/03/15 21:52:29 Modified:lib/ModPerl Code.pm src/modules/perl mod_perl.c mod_perl.h modperl_config.c modperl_config.h modperl_interp.c modperl_interp.h Added: src/modules/perl modperl_cmd.c modperl_cmd.h Log: move cmd stuffs into its own module Revision ChangesPath 1.48 +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.47 retrieving revision 1.48 diff -u -r1.47 -r1.48 --- Code.pm 2001/03/16 05:32:34 1.47 +++ Code.pm 2001/03/16 05:52:28 1.48 @@ -511,7 +511,7 @@ generate_trace = {h = 'modperl_trace.h'}, ); -my @c_src_names = qw(interp tipool log config options callback handler +my @c_src_names = qw(interp tipool log config cmd options callback handler gtop util filter mgv pcw); my @g_c_names = map { "modperl_$_" } qw(hooks directives flags xsinit); my @c_names = ('mod_perl', (map "modperl_$_", @c_src_names)); 1.39 +9 -9 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.38 retrieving revision 1.39 diff -u -r1.38 -r1.39 --- mod_perl.c2001/03/16 05:32:35 1.38 +++ mod_perl.c2001/03/16 05:52:29 1.39 @@ -233,23 +233,23 @@ } static const command_rec modperl_cmds[] = { -MP_SRV_CMD_ITERATE("PerlSwitches", switches, "Perl Switches"), -MP_SRV_CMD_ITERATE("PerlOptions", options, "Perl Options"), +MP_CMD_SRV_ITERATE("PerlSwitches", switches, "Perl Switches"), +MP_CMD_SRV_ITERATE("PerlOptions", options, "Perl Options"), #ifdef MP_TRACE -MP_SRV_CMD_TAKE1("PerlTrace", trace, "Trace level"), +MP_CMD_SRV_TAKE1("PerlTrace", trace, "Trace level"), #endif #ifdef USE_ITHREADS -MP_SRV_CMD_TAKE1("PerlInterpStart", interp_start, +MP_CMD_SRV_TAKE1("PerlInterpStart", interp_start, "Number of Perl interpreters to start"), -MP_SRV_CMD_TAKE1("PerlInterpMax", interp_max, +MP_CMD_SRV_TAKE1("PerlInterpMax", interp_max, "Max number of running Perl interpreters"), -MP_SRV_CMD_TAKE1("PerlInterpMaxSpare", interp_max_spare, +MP_CMD_SRV_TAKE1("PerlInterpMaxSpare", interp_max_spare, "Max number of spare Perl interpreters"), -MP_SRV_CMD_TAKE1("PerlInterpMinSpare", interp_min_spare, +MP_CMD_SRV_TAKE1("PerlInterpMinSpare", interp_min_spare, "Min number of spare Perl interpreters"), -MP_SRV_CMD_TAKE1("PerlInterpMaxRequests", interp_max_requests, +MP_CMD_SRV_TAKE1("PerlInterpMaxRequests", interp_max_requests, "Max number of requests per Perl interpreters"), -MP_DIR_CMD_TAKE1("PerlInterpLifetime", interp_lifetime, +MP_CMD_DIR_TAKE1("PerlInterpLifetime", interp_lifetime, "Lifetime of a Perl interpreter"), #endif MP_CMD_ENTRIES, 1.28 +1 -0 modperl-2.0/src/modules/perl/mod_perl.h Index: mod_perl.h === RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.h,v retrieving revision 1.27 retrieving revision 1.28 diff -u -r1.27 -r1.28 --- mod_perl.h2001/03/16 04:58:58 1.27 +++ mod_perl.h2001/03/16 05:52:29 1.28 @@ -16,6 +16,7 @@ #include "modperl_types.h" #include "modperl_util.h" #include "modperl_config.h" +#include "modperl_cmd.h" #include "modperl_handler.h" #include "modperl_callback.h" #include "modperl_tipool.h" 1.26 +2 -147modperl-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.25 retrieving revision 1.26 diff -u -r1.25 -r1.26 --- modperl_config.c 2001/03/16 05:32:35 1.25 +++ modperl_config.c 2001/03/16 05:52:29 1.26 @@ -1,23 +1,5 @@ #include "mod_perl.h" -char *modperl_cmd_push_handlers(MpAV **handlers, const char *name, -apr_pool_t *p) -{ -modperl_handler_t *h = modperl_handler_new(p, name); - -if (!*handlers) { -*handlers = apr_array_make(p, 1, sizeof(modperl_handler_t *)); -MP_TRACE_d(MP_FUNC, "created handler stack\n"); -} - -/* XXX parse_handler if Perl is running */ - -*(modperl_handler_t **)apr_array_push(*handlers) = h; -MP_TRACE_d(MP_FUNC, "pushed handler: %s\n", h-name); - -return NULL; -} - void
cvs commit: modperl-2.0/src/modules/perl modperl_callback.c modperl_handler.c modperl_handler.h
dougm 01/03/15 22:32:15 Modified:lib/ModPerl Code.pm src/modules/perl modperl_callback.c modperl_handler.c modperl_handler.h Log: move some code into modperl_handler_lookup_handlers() so it can be reused for {get,set,push}_handlers Revision ChangesPath 1.49 +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.48 retrieving revision 1.49 diff -u -r1.48 -r1.49 --- Code.pm 2001/03/16 05:52:28 1.48 +++ Code.pm 2001/03/16 06:32:14 1.49 @@ -113,7 +113,7 @@ my($self, $h_add, $c_add) = @_; local $" = ",\n"; while (my($class, $h) = each %{ $self-{handler_index_desc} }) { -my $func = canon_func($class, 'handler', 'desc'); +my $func = canon_func('handler', 'desc', $class); my $array = join '_', 'MP', $func; my $proto = "const char *$func(int idx)"; 1.32 +2 -22 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.31 retrieving revision 1.32 diff -u -r1.31 -r1.32 --- modperl_callback.c2001/03/16 05:08:15 1.31 +++ modperl_callback.c2001/03/16 06:32:15 1.32 @@ -114,28 +114,8 @@ return DECLINED; } -switch (type) { - case MP_HANDLER_TYPE_PER_DIR: -av = dcfg-handlers[idx]; -MP_TRACE_a_do(desc = modperl_per_dir_handler_desc(idx)); -break; - case MP_HANDLER_TYPE_PER_SRV: -av = scfg-handlers[idx]; -MP_TRACE_a_do(desc = modperl_per_srv_handler_desc(idx)); -break; - case MP_HANDLER_TYPE_CONNECTION: -av = scfg-connection_cfg-handlers[idx]; -MP_TRACE_a_do(desc = modperl_connection_handler_desc(idx)); -break; - case MP_HANDLER_TYPE_FILES: -av = scfg-files_cfg-handlers[idx]; -MP_TRACE_a_do(desc = modperl_files_handler_desc(idx)); -break; - case MP_HANDLER_TYPE_PROCESS: -av = scfg-process_cfg-handlers[idx]; -MP_TRACE_a_do(desc = modperl_process_handler_desc(idx)); -break; -}; +av = modperl_handler_lookup_handlers(dcfg, scfg, NULL, + type, idx, desc); if (!av) { MP_TRACE_h(MP_FUNC, "no %s handlers configured (%s)\n", 1.2 +37 -0 modperl-2.0/src/modules/perl/modperl_handler.c Index: modperl_handler.c === RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_handler.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- modperl_handler.c 2001/03/16 04:58:59 1.1 +++ modperl_handler.c 2001/03/16 06:32:15 1.2 @@ -60,3 +60,40 @@ va_end(args); } + +#define set_desc(dtype) \ +MP_TRACE_a_do(if (desc) *desc = modperl_handler_desc_##dtype(idx)) + +MpAV *modperl_handler_lookup_handlers(modperl_config_dir_t *dcfg, + modperl_config_srv_t *scfg, + modperl_config_req_t *rcfg, + int type, int idx, + const char **desc) +{ +MpAV *av = NULL; + +switch (type) { + case MP_HANDLER_TYPE_PER_DIR: +av = dcfg-handlers[idx]; +set_desc(per_dir); +break; + case MP_HANDLER_TYPE_PER_SRV: +av = scfg-handlers[idx]; +set_desc(per_srv); +break; + case MP_HANDLER_TYPE_CONNECTION: +av = scfg-connection_cfg-handlers[idx]; +set_desc(connection); +break; + case MP_HANDLER_TYPE_FILES: +av = scfg-files_cfg-handlers[idx]; +set_desc(files); +break; + case MP_HANDLER_TYPE_PROCESS: +av = scfg-process_cfg-handlers[idx]; +set_desc(process); +break; +}; + +return av; +} 1.2 +5 -0 modperl-2.0/src/modules/perl/modperl_handler.h Index: modperl_handler.h === RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_handler.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- modperl_handler.h 2001/03/16 04:58:59 1.1 +++ modperl_handler.h 2001/03/16 06:32:15 1.2 @@ -8,5 +8,10 @@ void modperl_handler_make_args(pTHX_ AV **avp, ...); +MpAV *modperl_handler_lookup_handlers(modperl_config_dir_t *dcfg, + modperl_config_srv_t *scfg, +
cvs commit: modperl-2.0/src/modules/perl modperl_config.h
dougm 01/03/15 22:35:18 Modified:src/modules/perl modperl_config.h Log: allow modperl_config_req_get() to not core-dump if r == NULL Revision ChangesPath 1.23 +2 -2 modperl-2.0/src/modules/perl/modperl_config.h Index: modperl_config.h === RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_config.h,v retrieving revision 1.22 retrieving revision 1.23 diff -u -r1.22 -r1.23 --- modperl_config.h 2001/03/16 05:52:29 1.22 +++ modperl_config.h 2001/03/16 06:35:18 1.23 @@ -27,8 +27,8 @@ } #define modperl_config_req_get(r) \ - (modperl_config_req_t *) \ - ap_get_module_config(r-request_config, perl_module) + (r ? (modperl_config_req_t *) \ + ap_get_module_config(r-request_config, perl_module) : NULL) #define MP_dRCFG \ modperl_config_req_t *rcfg = modperl_config_req_get(r)
cvs commit: modperl-2.0/src/modules/perl modperl_callback.c modperl_handler.c modperl_handler.h
dougm 01/03/15 22:41:46 Modified:src/modules/perl modperl_callback.c modperl_handler.c modperl_handler.h Log: need to return the address incase caller needs to initialize (e.g. push/set) Revision ChangesPath 1.33 +4 -4 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.32 retrieving revision 1.33 diff -u -r1.32 -r1.33 --- modperl_callback.c2001/03/16 06:32:15 1.32 +++ modperl_callback.c2001/03/16 06:41:46 1.33 @@ -102,7 +102,7 @@ MP_dDCFG; modperl_handler_t **handlers; apr_pool_t *p = NULL; -MpAV *av = NULL; +MpAV *av, **avp; int i, status = OK; const char *desc = NULL; va_list args; @@ -114,10 +114,10 @@ return DECLINED; } -av = modperl_handler_lookup_handlers(dcfg, scfg, NULL, - type, idx, desc); +avp = modperl_handler_lookup_handlers(dcfg, scfg, NULL, + type, idx, desc); -if (!av) { +if (!(avp (av = *avp))) { MP_TRACE_h(MP_FUNC, "no %s handlers configured (%s)\n", desc, r ? r-uri : ""); return DECLINED; 1.3 +6 -6 modperl-2.0/src/modules/perl/modperl_handler.c Index: modperl_handler.c === RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_handler.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- modperl_handler.c 2001/03/16 06:32:15 1.2 +++ modperl_handler.c 2001/03/16 06:41:46 1.3 @@ -64,11 +64,11 @@ #define set_desc(dtype) \ MP_TRACE_a_do(if (desc) *desc = modperl_handler_desc_##dtype(idx)) -MpAV *modperl_handler_lookup_handlers(modperl_config_dir_t *dcfg, - modperl_config_srv_t *scfg, - modperl_config_req_t *rcfg, - int type, int idx, - const char **desc) +MpAV **modperl_handler_lookup_handlers(modperl_config_dir_t *dcfg, + modperl_config_srv_t *scfg, + modperl_config_req_t *rcfg, + int type, int idx, + const char **desc) { MpAV *av = NULL; @@ -95,5 +95,5 @@ break; }; -return av; +return av ? av : NULL; } 1.3 +5 -5 modperl-2.0/src/modules/perl/modperl_handler.h Index: modperl_handler.h === RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_handler.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- modperl_handler.h 2001/03/16 06:32:15 1.2 +++ modperl_handler.h 2001/03/16 06:41:46 1.3 @@ -8,10 +8,10 @@ void modperl_handler_make_args(pTHX_ AV **avp, ...); -MpAV *modperl_handler_lookup_handlers(modperl_config_dir_t *dcfg, - modperl_config_srv_t *scfg, - modperl_config_req_t *rcfg, - int type, int idx, - const char **desc); +MpAV **modperl_handler_lookup_handlers(modperl_config_dir_t *dcfg, + modperl_config_srv_t *scfg, + modperl_config_req_t *rcfg, + int type, int idx, + const char **desc); #endif /* MODPERL_HANDLER_H */
cvs commit: modperl-2.0/src/modules/perl modperl_config.c modperl_filter.c modperl_handler.c modperl_mgv.c modperl_types.h
dougm 01/03/15 23:30:25 Modified:lib/ModPerl Code.pm src/modules/perl modperl_config.c modperl_filter.c modperl_handler.c modperl_mgv.c modperl_types.h Log: no need for modperl_{files,process,connection}_config_t Revision ChangesPath 1.50 +6 -4 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.49 retrieving revision 1.50 diff -u -r1.49 -r1.50 --- Code.pm 2001/03/16 06:32:14 1.49 +++ Code.pm 2001/03/16 07:30:21 1.50 @@ -71,8 +71,7 @@ ); 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}-{name} = 'scfg'; $directive_proto{$class}-{cfg}-{get} = $scfg_get; for (qw(args scope)) { @@ -82,6 +81,9 @@ while (my($k,$v) = each %directive_proto) { $directive_proto{$k}-{ret} = 'const char *'; +my $handlers = join '_', 'handlers', canon_lc($k); +$directive_proto{$k}-{handlers} = + join '-', $directive_proto{$k}-{cfg}-{name}, $handlers; } #XXX: allow disabling of PerDir hooks on a PerDir basis @@ -144,7 +146,7 @@ my $handler_type = canon_define('HANDLER_TYPE', $class); print $h_fh "\n#define ", - canon_define($class, 'num_handlers'), " $n\n\n"; + canon_define('HANDLER_NUM', $class), " $n\n\n"; print $h_fh "#define $handler_type $type\n\n"; @@ -271,7 +273,7 @@ my $protostr = canon_proto($prototype, $name); my $flag = 'MpSrv' . canon_uc($h); my $ix = $self-{handler_index}-{$class}-[$i++]; -my $av = "$prototype-{cfg}-{name}-handlers[$ix]"; +my $av = "$prototype-{handlers} [$ix]"; print $h_fh "$protostr;\n"; 1.27 +13 -22modperl-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.26 retrieving revision 1.27 diff -u -r1.26 -r1.27 --- modperl_config.c 2001/03/16 05:52:29 1.26 +++ modperl_config.c 2001/03/16 07:30:22 1.27 @@ -32,8 +32,8 @@ { /* XXX: should do a proper merge of the arrays */ /* XXX: and check if Perl*Handler is disabled */ int i; -for (i=0; iMP_PER_DIR_NUM_HANDLERS; i++) { -merge_item(handlers[i]); +for (i=0; i MP_HANDLER_NUM_PER_DIR; i++) { +merge_item(handlers_per_dir[i]); } } @@ -63,21 +63,6 @@ modperl_config_srv_argv_push((char *)ap_server_argv0); -#ifdef MP_CONNECTION_NUM_HANDLERS -scfg-connection_cfg = (modperl_connection_config_t *) -apr_pcalloc(p, sizeof(*scfg-connection_cfg)); -#endif - -#ifdef MP_FILES_NUM_HANDLERS -scfg-files_cfg = (modperl_files_config_t *) -apr_pcalloc(p, sizeof(*scfg-files_cfg)); -#endif - -#ifdef MP_PROCESS_NUM_HANDLERS -scfg-process_cfg = (modperl_process_config_t *) -apr_pcalloc(p, sizeof(*scfg-process_cfg)); -#endif - MP_TRACE_d(MP_FUNC, "0x%lx\n", (unsigned long)scfg); return scfg; @@ -161,15 +146,21 @@ #endif merge_item(argv); -merge_item(files_cfg); -merge_item(process_cfg); -merge_item(connection_cfg); { /* XXX: should do a proper merge of the arrays */ /* XXX: and check if Perl*Handler is disabled */ int i; -for (i=0; iMP_PER_SRV_NUM_HANDLERS; i++) { -merge_item(handlers[i]); +for (i=0; i MP_HANDLER_NUM_PER_SRV; i++) { +merge_item(handlers_per_srv[i]); +} +for (i=0; i MP_HANDLER_NUM_FILES; i++) { +merge_item(handlers_files[i]); +} +for (i=0; i MP_HANDLER_NUM_PROCESS; i++) { +merge_item(handlers_process[i]); +} +for (i=0; i MP_HANDLER_NUM_CONNECTION; i++) { +merge_item(handlers_connection[i]); } } 1.10 +1 -1 modperl-2.0/src/modules/perl/modperl_filter.c Index: modperl_filter.c === RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_filter.c,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- modperl_filter.c 2001/03/15 05:39:07 1.9 +++ modperl_filter.c 2001/03/16 07:30:22 1.10 @@ -336,7 +336,7 @@ MP_dDCFG; MpAV *av; -if ((av = dcfg-handlers[MP_OUTPUT_FILTER_HANDLER])) { +if ((av = dcfg-handlers_per_dir[MP_OUTPUT_FILTER_HANDLER])) {