cvs commit: modperl-2.0/src/modules/perl modperl_callback.c modperl_callback.h modperl_handler.c modperl_handler.h modperl_types.h

2001-03-16 Thread dougm

dougm   01/03/16 09:23:31

  Modified:src/modules/perl modperl_callback.c modperl_callback.h
modperl_handler.c modperl_handler.h modperl_types.h
  Log:
  prototype the 3 pools in run_handlers() rather that use va_args,
  so we can have a pool sooner rather than later
  
  pass lookup_hanalders() an lvalue arg and pool so it can create the
  handler array if needed
  
  add handler vectors to per-request config (will be used for set/push handlers)
  
  Revision  ChangesPath
  1.35  +38 -51modperl-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.34
  retrieving revision 1.35
  diff -u -r1.34 -r1.35
  --- modperl_callback.c2001/03/16 06:57:42 1.34
  +++ modperl_callback.c2001/03/16 17:23:23 1.35
  @@ -91,8 +91,11 @@
   return status;
   }
   
  -int modperl_callback_run_handlers(int idx, request_rec *r, conn_rec *c,
  -  server_rec *s, int type, ...)
  +int modperl_callback_run_handlers(int idx, int type,
  +  request_rec *r, conn_rec *c, server_rec *s,
  +  apr_pool_t *pconf,
  +  apr_pool_t *plog,
  +  apr_pool_t *ptemp)
   {
   #ifdef USE_ITHREADS
   pTHX;
  @@ -105,7 +108,6 @@
   MpAV *av, **avp;
   int i, status = OK;
   const char *desc = NULL;
  -va_list args;
   AV *av_args = Nullav;
   
   if (!MpSrvENABLED(scfg)) {
  @@ -114,8 +116,15 @@
   return DECLINED;
   }
   
  -avp = modperl_handler_lookup_handlers(dcfg, scfg, NULL,
  -  type, idx, desc);
  +if (r || c) {
  +p = c ? c-pool : r-pool;
  +}
  +else {
  +p = pconf;
  +}
  +
  +avp = modperl_handler_lookup_handlers(dcfg, scfg, NULL, p,
  +  type, idx, FALSE, desc);
   
   if (!(avp  (av = *avp))) {
   MP_TRACE_h(MP_FUNC, "no %s handlers configured (%s)\n",
  @@ -128,7 +137,6 @@
   c = r-connection;
   }
   if (r || c) {
  -p = c ? c-pool : r-pool;
   interp = modperl_interp_select(r, c, s);
   aTHX = interp-perl;
   }
  @@ -150,39 +158,17 @@
 "Apache::Connection", c, NULL);
   break;
 case MP_HANDLER_TYPE_FILES:
  -  {
  -  apr_pool_t *pconf, *plog, *ptemp;
  -
  -  va_start(args, type);
  -  pconf = va_arg(args, apr_pool_t *);
  -  plog  = va_arg(args, apr_pool_t *);
  -  ptemp = va_arg(args, apr_pool_t *);
  -  va_end(args);
  -
  -  modperl_handler_make_args(aTHX_ av_args,
  -"Apache::Pool", pconf,
  -"Apache::Pool", plog,
  -"Apache::Pool", ptemp,
  -"Apache::Server", s, NULL);
  -  }
  -  break;
  +modperl_handler_make_args(aTHX_ av_args,
  +  "Apache::Pool", pconf,
  +  "Apache::Pool", plog,
  +  "Apache::Pool", ptemp,
  +  "Apache::Server", s, NULL);
  +break;
 case MP_HANDLER_TYPE_PROCESS:
  -  {
  -  apr_pool_t *pconf;
  -
  -  va_start(args, type);
  -  pconf = va_arg(args, apr_pool_t *);
  -  va_end(args);
  -
  -  if (!p) {
  -  p = pconf;
  -  }
  -
  -  modperl_handler_make_args(aTHX_ av_args,
  -"Apache::Pool", pconf,
  -"Apache::Server", s, NULL);
  -  }
  -  break;
  +modperl_handler_make_args(aTHX_ av_args,
  +  "Apache::Pool", pconf,
  +  "Apache::Server", s, NULL);
  +break;
   };
   
   MP_TRACE_h(MP_FUNC, "running %d %s handlers\n",
  @@ -212,36 +198,37 @@
   
   int modperl_callback_per_dir(int idx, request_rec *r)
   {
  -return modperl_callback_run_handlers(idx, r, NULL,
  - r-server,
  - MP_HANDLER_TYPE_PER_DIR);
  +return modperl_callback_run_handlers(idx, MP_HANDLER_TYPE_PER_DIR,
  + r, NULL, r-server,
  + NULL, NULL, NULL);
   }
   
   int modperl_callback_per_srv(int idx, request_rec *r)
   {
  -return modperl_callback_run_handlers(idx, r, NULL,
  -  

cvs commit: modperl-2.0/xs/Apache/ServerUtil - New directory

2001-03-16 Thread dougm

dougm   01/03/16 21:59:45

  modperl-2.0/xs/Apache/ServerUtil - New directory



cvs commit: modperl-2.0/xs/maps apache_functions.map

2001-03-16 Thread dougm

dougm   01/03/16 22:03:38

  Modified:lib/ModPerl Code.pm
   src/modules/perl modperl_callback.c modperl_config.h
modperl_handler.c modperl_handler.h modperl_mgv.c
modperl_mgv.h
   xs/Apache/RequestUtil Apache__RequestUtil.h
   xs/maps  apache_functions.map
  Added:   xs/Apache/ServerUtil Apache__ServerUtil.h
  Log:
  implement ${r,s}-{push,set,get}_handlers}
  
  Revision  ChangesPath
  1.51  +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.50
  retrieving revision 1.51
  diff -u -r1.50 -r1.51
  --- Code.pm   2001/03/16 07:30:21 1.50
  +++ Code.pm   2001/03/17 06:03:37 1.51
  @@ -92,7 +92,7 @@
   Srv = [qw(NONE CLONE PARENT ENABLED AUTOLOAD), @hook_flags, 'UNSET'],
   Dir = [qw(NONE SEND_HEADER SETUP_ENV UNSET)],
   Interp = [qw(NONE IN_USE PUTBACK CLONED BASE)],
  -Handler = [qw(NONE PARSED METHOD OBJECT ANON AUTOLOAD)],
  +Handler = [qw(NONE PARSED METHOD OBJECT ANON AUTOLOAD DYNAMIC)],
   );
   
   my %flags_lookup = map { $_,1 } qw(Srv Dir);
  
  
  
  1.36  +4 -2  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.35
  retrieving revision 1.36
  diff -u -r1.35 -r1.36
  --- modperl_callback.c2001/03/16 17:23:23 1.35
  +++ modperl_callback.c2001/03/17 06:03:37 1.36
  @@ -9,7 +9,7 @@
   int count, status;
   
   #ifdef USE_ITHREADS
  -if (p  !MpHandlerPARSED(handler)) {
  +if (p  !MpHandlerPARSED(handler)  !MpHandlerDYNAMIC(handler)) {
   MP_dSCFG(s);
   if (scfg-threaded_mpm) {
   /*
  @@ -103,6 +103,7 @@
   #endif
   MP_dSCFG(s);
   MP_dDCFG;
  +MP_dRCFG;
   modperl_handler_t **handlers;
   apr_pool_t *p = NULL;
   MpAV *av, **avp;
  @@ -123,7 +124,7 @@
   p = pconf;
   }
   
  -avp = modperl_handler_lookup_handlers(dcfg, scfg, NULL, p,
  +avp = modperl_handler_lookup_handlers(dcfg, scfg, rcfg, p,
 type, idx, FALSE, desc);
   
   if (!(avp  (av = *avp))) {
  @@ -171,6 +172,7 @@
   break;
   };
   
  +/* XXX: deal with {push,set}_handler of the phase we're currently in */
   MP_TRACE_h(MP_FUNC, "running %d %s handlers\n",
  av-nelts, desc);
   handlers = (modperl_handler_t **)av-elts;
  
  
  
  1.24  +4 -0  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.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- modperl_config.h  2001/03/16 06:35:18 1.23
  +++ modperl_config.h  2001/03/17 06:03:37 1.24
  @@ -37,6 +37,10 @@
 (r ? (modperl_config_dir_t *) \
 ap_get_module_config(r-per_dir_config, perl_module) : NULL)
   
  +#define modperl_config_dir_get_defaults(s) \
  +  (modperl_config_dir_t *) \
  +  ap_get_module_config(s-lookup_defaults, perl_module)
  +
   #define MP_dDCFG \
  modperl_config_dir_t *dcfg = modperl_config_dir_get(r)
   
  
  
  
  1.6   +216 -5modperl-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.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- modperl_handler.c 2001/03/16 17:23:24 1.5
  +++ modperl_handler.c 2001/03/17 06:03:37 1.6
  @@ -64,41 +64,252 @@
   #define set_desc(dtype) \
   MP_TRACE_a_do(if (desc) *desc = modperl_handler_desc_##dtype(idx))
   
  +#define check_modify(dtype) \
  +if ((action  MP_HANDLER_ACTION_GET)  rcfg) { \
  +dTHX; \
  +Perl_croak(aTHX_ "too late to modify %s handlers", \
  +   modperl_handler_desc_##dtype(idx)); \
  +}
  +
  +/*
  + * generic function to lookup handlers for use in modperl_callback(),
  + * $r-{push,set,get}_handlers, $s-{push,set,get}_handlers
  + * $s-push/set at startup time are the same as configuring Perl*Handlers
  + * $r-push/set at request time will create entries in r-request_config
  + * push will first merge with configured handlers, unless an entry
  + * in r-request_config already exists.  in this case, push or set has
  + * already been called for the given handler, 
  + * r-request_config entries then override those in r-per_dir_config
  + */
  +
   MpAV **modperl_handler_lookup_handlers(modperl_config_dir_t *dcfg,
  

cvs commit: modperl-2.0/src/modules/perl modperl_cmd.c

2001-03-16 Thread dougm

dougm   01/03/16 22:08:05

  Modified:src/modules/perl modperl_cmd.c
  Log:
  make use of modperl_handler_array_ macros
  
  Revision  ChangesPath
  1.2   +2 -2  modperl-2.0/src/modules/perl/modperl_cmd.c
  
  Index: modperl_cmd.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_cmd.c,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- modperl_cmd.c 2001/03/16 05:52:29 1.1
  +++ modperl_cmd.c 2001/03/17 06:08:05 1.2
  @@ -6,13 +6,13 @@
   modperl_handler_t *h = modperl_handler_new(p, name);
   
   if (!*handlers) {
  -*handlers = apr_array_make(p, 1, sizeof(modperl_handler_t *));
  +*handlers = modperl_handler_array_new(p);
   MP_TRACE_d(MP_FUNC, "created handler stack\n");
   }
   
   /* XXX parse_handler if Perl is running */
   
  -*(modperl_handler_t **)apr_array_push(*handlers) = h;
  +modperl_handler_array_push(*handlers, h);
   MP_TRACE_d(MP_FUNC, "pushed handler: %s\n", h-name);
   
   return NULL;