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

2001-10-06 Thread dougm

dougm   01/10/06 14:05:40

  Modified:src/modules/perl modperl_callback.c modperl_callback.h
modperl_filter.c
  Log:
  pass a request_rec to modperl_callback() for future use
  
  Revision  ChangesPath
  1.45  +2 -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.44
  retrieving revision 1.45
  diff -u -r1.44 -r1.45
  --- modperl_callback.c2001/09/28 15:16:06 1.44
  +++ modperl_callback.c2001/10/06 21:05:40 1.45
  @@ -1,7 +1,7 @@
   #include "mod_perl.h"
   
   int modperl_callback(pTHX_ modperl_handler_t *handler, apr_pool_t *p,
  - server_rec *s, AV *args)
  + request_rec *r, server_rec *s, AV *args)
   {
   CV *cv=Nullcv;
   I32 flags = G_EVAL|G_SCALAR;
  @@ -168,7 +168,7 @@
   handlers = (modperl_handler_t **)av->elts;
   
   for (i=0; inelts; i++) {
  -if ((status = modperl_callback(aTHX_ handlers[i], p, s, av_args)) != OK) {
  +if ((status = modperl_callback(aTHX_ handlers[i], p, r, s, av_args)) != OK) 
{
   status = modperl_errsv(aTHX_ status, r, s);
   }
   
  
  
  
  1.19  +1 -1  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.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- modperl_callback.h2001/03/16 17:23:24 1.18
  +++ modperl_callback.h2001/10/06 21:05:40 1.19
  @@ -11,7 +11,7 @@
   #define ap_hook_logap_hook_log_transaction
   
   int modperl_callback(pTHX_ modperl_handler_t *handler, apr_pool_t *p,
  - server_rec *s, AV *args);
  + request_rec *r, server_rec *s, AV *args);
   
   int modperl_callback_run_handlers(int idx, int type,
 request_rec *r, conn_rec *c, server_rec *s,
  
  
  
  1.26  +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.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- modperl_filter.c  2001/08/30 05:15:51 1.25
  +++ modperl_filter.c  2001/10/06 21:05:40 1.26
  @@ -140,7 +140,7 @@
   av_push(args, newSViv(*readbytes));
   }
   
  -if ((status = modperl_callback(aTHX_ handler, p, s, args)) != OK) {
  +if ((status = modperl_callback(aTHX_ handler, p, r, s, args)) != OK) {
   status = modperl_errsv(aTHX_ status, r, s);
   }
   
  
  
  



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/src/modules/perl modperl_callback.c modperl_callback.h modperl_filter.c modperl_mgv.c modperl_mgv.h

2001-03-14 Thread dougm

dougm   01/03/14 21:39:09

  Modified:src/modules/perl modperl_callback.c modperl_callback.h
modperl_filter.c modperl_mgv.c modperl_mgv.h
  Log:
  VirtualHosts configured with 'PerlOptions +Parent' need to have autoloaded
  modules required into their own namespace
  
  Revision  ChangesPath
  1.27  +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.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- modperl_callback.c2001/03/14 17:28:07 1.26
  +++ modperl_callback.c2001/03/15 05:39:06 1.27
  @@ -62,7 +62,7 @@
   }
   
   int modperl_callback(pTHX_ modperl_handler_t *handler, apr_pool_t *p,
  - AV *args)
  + server_rec *s, AV *args)
   {
   CV *cv=Nullcv;
   I32 flags = G_EVAL|G_SCALAR;
  @@ -113,12 +113,12 @@
   cv = (CV*)SvRV(sv);
   }
   else {
  -GV *gv = modperl_mgv_lookup(aTHX_ handler->mgv_cv);
  +GV *gv = modperl_mgv_lookup_autoload(aTHX_ handler->mgv_cv, s, p);
   if (gv) {
   cv = modperl_mgv_cv(gv);
   }
   else {
  -char *name = modperl_mgv_as_string(aTHX_ handler->mgv_cv, p);
  +char *name = modperl_mgv_as_string(aTHX_ handler->mgv_cv, p, 0);
   MP_TRACE_h(MP_FUNC, "lookup of %s failed\n", name);
   }
   }
  @@ -268,7 +268,7 @@
   };
   
   for (i=0; inelts; i++) {
  -if ((status = modperl_callback(aTHX_ handlers[i], p, av_args)) != OK) {
  +if ((status = modperl_callback(aTHX_ handlers[i], p, s, av_args)) != OK) {
   status = modperl_errsv(aTHX_ status, r, s);
   }
   
  
  
  
  1.15  +1 -1  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.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- modperl_callback.h2001/03/14 17:38:30 1.14
  +++ modperl_callback.h2001/03/15 05:39:07 1.15
  @@ -18,7 +18,7 @@
   void modperl_handler_make_args(pTHX_ AV **avp, ...);
   
   int modperl_callback(pTHX_ modperl_handler_t *handler, apr_pool_t *p,
  - AV *args);
  + server_rec *s, AV *args);
   
   int modperl_run_handlers(int idx, request_rec *r, conn_rec *c,
server_rec *s, int type, ...);
  
  
  
  1.9   +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.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- modperl_filter.c  2001/03/14 00:37:52 1.8
  +++ modperl_filter.c  2001/03/15 05:39:07 1.9
  @@ -97,7 +97,7 @@
 filter_classes[filter->mode], filter,
 NULL);
   
  -if ((status = modperl_callback(aTHX_ handler, p, args)) != OK) {
  +if ((status = modperl_callback(aTHX_ handler, p, s, args)) != OK) {
   status = modperl_errsv(aTHX_ status, r, s);
   }
   
  
  
  
  1.3   +88 -11modperl-2.0/src/modules/perl/modperl_mgv.c
  
  Index: modperl_mgv.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_mgv.c,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- modperl_mgv.c 2001/03/15 01:26:18 1.2
  +++ modperl_mgv.c 2001/03/15 05:39:07 1.3
  @@ -141,6 +141,33 @@
   return Nullgv;
   }
   
  +#ifdef USE_ITHREADS
  +MP_INLINE GV *modperl_mgv_lookup_autoload(pTHX_ modperl_mgv_t *symbol,
  +  server_rec *s, apr_pool_t *p)
  +{
  +MP_dSCFG(s);
  +GV *gv = modperl_mgv_lookup(aTHX_ symbol);
  +
  +if (gv || !MpSrvPARENT(scfg)) {
  +return gv;
  +}
  +
  +/* 
  + * this VirtualHost has its own parent interpreter
  + * must require the module again with this server's THX
  + */
  +modperl_mgv_require_module(aTHX_ symbol, s, p);
  +
  +return modperl_mgv_lookup(aTHX_ symbol);
  +}
  +#else
  +MP_INLINE GV *modperl_mgv_lookup_autoload(pTHX_ modperl_mgv_t *symbol,
  +  server_rec *s, apr_pool_t *p)
  +{
  +return modperl_mgv_lookup(aTHX_ symbol);
  +}
  +#endif
  +
   int modperl_mgv_resolve(pTHX_ modperl_handler_t *handler,
   apr_pool_t *p, const char *name)
   {
  @@ -257,31 +284,53 @@
   }
   
   char *modperl_mgv_as_string(pTHX_ modperl_mgv_t *symbol,
  -  

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

2001-03-14 Thread dougm

dougm   01/03/14 09:28:07

  Modified:src/modules/perl modperl_callback.c modperl_callback.h
  Log:
  canonicalize MP_HANDLER_TYPE_ names
  
  Revision  ChangesPath
  1.26  +17 -15modperl-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.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- modperl_callback.c2001/03/14 05:22:49 1.25
  +++ modperl_callback.c2001/03/14 17:28:07 1.26
  @@ -173,23 +173,23 @@
   }
   
   switch (type) {
  -  case MP_HANDLER_TYPE_DIR:
  +  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_SRV:
  +  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_CONN:
  +  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_FILE:
  +  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_PROC:
  +  case MP_HANDLER_TYPE_PROCESS:
   av = scfg->process_cfg->handlers[idx];
   MP_TRACE_a_do(desc = modperl_process_handler_desc(idx));
   break;
  @@ -222,16 +222,16 @@
   handlers = (modperl_handler_t **)av->elts;
   
   switch (type) {
  -  case MP_HANDLER_TYPE_DIR:
  -  case MP_HANDLER_TYPE_SRV:
  +  case MP_HANDLER_TYPE_PER_DIR:
  +  case MP_HANDLER_TYPE_PER_SRV:
   modperl_handler_make_args(aTHX_ &av_args,
 "Apache::RequestRec", r, NULL);
   break;
  -  case MP_HANDLER_TYPE_CONN:
  +  case MP_HANDLER_TYPE_CONNECTION:
   modperl_handler_make_args(aTHX_ &av_args,
 "Apache::Connection", c, NULL);
   break;
  -  case MP_HANDLER_TYPE_FILE:
  +  case MP_HANDLER_TYPE_FILES:
 {
 apr_pool_t *pconf, *plog, *ptemp;
   
  @@ -248,7 +248,7 @@
   "Apache::Server", s, NULL);
 }
 break;
  -  case MP_HANDLER_TYPE_PROC:
  +  case MP_HANDLER_TYPE_PROCESS:
 {
 apr_pool_t *pconf;
   
  @@ -292,29 +292,31 @@
   
   int modperl_per_dir_callback(int idx, request_rec *r)
   {
  -return modperl_run_handlers(idx, r, NULL, r->server, MP_HANDLER_TYPE_DIR);
  +return modperl_run_handlers(idx, r, NULL, r->server,
  +MP_HANDLER_TYPE_PER_DIR);
   }
   
   int modperl_per_srv_callback(int idx, request_rec *r)
   {
  -return modperl_run_handlers(idx, r, NULL, r->server, MP_HANDLER_TYPE_SRV);
  +return modperl_run_handlers(idx, r, NULL, r->server,
  +MP_HANDLER_TYPE_PER_SRV);
   }
   
   int modperl_connection_callback(int idx, conn_rec *c)
   {
   return modperl_run_handlers(idx, NULL, c, c->base_server,
  -MP_HANDLER_TYPE_CONN);
  +MP_HANDLER_TYPE_CONNECTION);
   }
   
   void modperl_process_callback(int idx, apr_pool_t *p, server_rec *s)
   {
  -modperl_run_handlers(idx, NULL, NULL, s, MP_HANDLER_TYPE_PROC, p);
  +modperl_run_handlers(idx, NULL, NULL, s, MP_HANDLER_TYPE_PROCESS, p);
   }
   
   void modperl_files_callback(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_FILE,
  +modperl_run_handlers(idx, NULL, NULL, s, MP_HANDLER_TYPE_FILES,
pconf, plog, ptemp);
   }
  
  
  
  1.13  +5 -5  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.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- modperl_callback.h2001/03/14 00:37:52 1.12
  +++ modperl_callback.h2001/03/14 17:28:07 1.13
  @@ -10,11 +10,11 @@
   #define ap_hook_fixup  ap_hook_fixups
   #define ap_hook_logap_hook_log_transaction
   
  -#define MP_HANDLER_TYPE_DIR 1
  -#define MP_HANDLER_TYPE_SRV 2
  -#define MP_HANDLER_TYPE_CONN 3
  -#define MP_HANDLER_TYPE_PROC 4
  -#define MP_HANDLER_TYPE_FILE 5
  +#define MP_HANDLER_TYPE_PER_DIR1
  +#define MP_HANDLER_TYPE_PER_SRV2
  +#define MP_HAN

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

2001-03-13 Thread dougm

dougm   01/03/13 16:37:53

  Modified:src/modules/perl modperl_callback.c modperl_callback.h
modperl_filter.c
  Log:
  pass an AV** rather than AV* to modperl_handler_make_args(), which will create the 
newAV() if needed
  
  Revision  ChangesPath
  1.24  +11 -8 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.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- modperl_callback.c2001/03/14 00:20:52 1.23
  +++ modperl_callback.c2001/03/14 00:37:52 1.24
  @@ -18,11 +18,15 @@
   return modperl_handler_new(p, h->name);
   }
   
  -void modperl_handler_make_args(pTHX_ AV *av, ...)
  +void modperl_handler_make_args(pTHX_ AV **avp, ...)
   {
   va_list args;
   
  -va_start(args, av);
  +if (!*avp) {
  +*avp = newAV(); /* XXX: cache an intialized AV* per-request */
  +}
  +
  +va_start(args, avp);
   
   for (;;) {
   char *classname = va_arg(args, char *);
  @@ -51,7 +55,7 @@
   break;
   }
   
  -av_push(av, sv);
  +av_push(*avp, sv);
   }
   
   va_end(args);
  @@ -213,16 +217,15 @@
   MP_TRACE_h(MP_FUNC, "running %d %s handlers\n",
  av->nelts, desc);
   handlers = (modperl_handler_t **)av->elts;
  -av_args = newAV();
   
   switch (type) {
 case MP_HANDLER_TYPE_DIR:
 case MP_HANDLER_TYPE_SRV:
  -modperl_handler_make_args(aTHX_ av_args,
  +modperl_handler_make_args(aTHX_ &av_args,
 "Apache::RequestRec", r, NULL);
   break;
 case MP_HANDLER_TYPE_CONN:
  -modperl_handler_make_args(aTHX_ av_args,
  +modperl_handler_make_args(aTHX_ &av_args,
 "Apache::Connection", c, NULL);
   break;
 case MP_HANDLER_TYPE_FILE:
  @@ -235,7 +238,7 @@
 ptemp = va_arg(args, apr_pool_t *);
 va_end(args);
   
  -  modperl_handler_make_args(aTHX_ av_args,
  +  modperl_handler_make_args(aTHX_ &av_args,
   "Apache::Pool", pconf,
   "Apache::Pool", plog,
   "Apache::Pool", ptemp,
  @@ -254,7 +257,7 @@
 p = pconf;
 }
   
  -  modperl_handler_make_args(aTHX_ av_args,
  +  modperl_handler_make_args(aTHX_ &av_args,
   "Apache::Pool", pconf,
   "Apache::Server", s, NULL);
 }
  
  
  
  1.12  +1 -1  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.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- modperl_callback.h2001/03/09 23:46:35 1.11
  +++ modperl_callback.h2001/03/14 00:37:52 1.12
  @@ -21,7 +21,7 @@
   modperl_handler_t *modperl_handler_dup(apr_pool_t *p,
  modperl_handler_t *h);
   
  -void modperl_handler_make_args(pTHX_ AV *avp, ...);
  +void modperl_handler_make_args(pTHX_ AV **avp, ...);
   
   int modperl_callback(pTHX_ modperl_handler_t *handler, apr_pool_t *p,
AV *args);
  
  
  
  1.8   +2 -4  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.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- modperl_filter.c  2001/03/14 00:03:29 1.7
  +++ modperl_filter.c  2001/03/14 00:37:52 1.8
  @@ -81,7 +81,7 @@
   
   int modperl_run_filter(modperl_filter_t *filter)
   {
  -AV *args;
  +AV *args = Nullav;
   int status;
   modperl_handler_t *handler =
   ((modperl_filter_ctx_t *)filter->f->ctx)->handler;
  @@ -93,9 +93,7 @@
   
   MP_dINTERP_SELECT(r, c, s);
   
  -args = newAV();
  -
  -modperl_handler_make_args(aTHX_ args,
  +modperl_handler_make_args(aTHX_ &args,
 filter_classes[filter->mode], filter,
 NULL);
   
  
  
  



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

2001-02-18 Thread dougm

dougm   01/02/18 13:55:08

  Modified:src/modules/perl modperl_callback.c modperl_callback.h
  Log:
  avoid c++ keywords (class)
  
  Revision  ChangesPath
  1.17  +1 -1  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.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- modperl_callback.c2001/02/08 19:42:02 1.16
  +++ modperl_callback.c2001/02/18 21:55:08 1.17
  @@ -87,7 +87,7 @@
   }
   
   int modperl_handler_lookup(pTHX_ modperl_handler_t *handler,
  -   char *class, char *name)
  +   char *package, char *name)
   {
   CV *cv;
   GV *gv;
  
  
  
  1.10  +1 -1  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.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- modperl_callback.h2000/08/21 03:01:30 1.9
  +++ modperl_callback.h2001/02/18 21:55:08 1.10
  @@ -25,7 +25,7 @@
   void modperl_handler_cache_cv(pTHX_ modperl_handler_t *handler, CV *cv);
   
   int modperl_handler_lookup(pTHX_ modperl_handler_t *handler,
  -   char *class, char *name);
  +   char *package, char *name);
   
   void modperl_handler_unparse(modperl_handler_t *handler);
   
  
  
  



cvs commit: modperl-2.0/src/modules/perl modperl_callback.c modperl_callback.h modperl_interp.c modperl_log.h modperl_tipool.c modperl_tipool.h modperl_types.h

2000-05-26 Thread dougm

dougm   00/05/26 13:34:51

  Modified:src/modules/perl modperl_callback.c modperl_callback.h
modperl_interp.c modperl_log.h modperl_tipool.c
modperl_tipool.h modperl_types.h
  Log:
  don't cache get_cv() in the server config structure
  fixup max/min logic
  
  Revision  ChangesPath
  1.10  +18 -8 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.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- modperl_callback.c2000/05/01 23:57:52 1.9
  +++ modperl_callback.c2000/05/26 20:34:49 1.10
  @@ -223,11 +223,25 @@
   return 0;
   }
   
  -int modperl_callback(pTHX_ modperl_handler_t *handler)
  +int modperl_callback(pTHX_ modperl_handler_t *handler, ap_pool_t *p)
   {
   dSP;
   int count, status;
   
  +#ifdef USE_ITHREADS
  +if (p) {
  +/* under ithreads, each handler needs to get_cv() from the
  + * selected interpreter so the proper CvPADLIST is used
  + * XXX: this should probably be reworked so threads can cache
  + * parsed handlers
  + */
  +modperl_handler_t *new_handler = 
  +modperl_handler_new(p, (void*)handler->name,
  +MP_HANDLER_TYPE_CHAR);
  +handler = new_handler;
  +}
  +#endif
  +
   if (!MpHandlerPARSED(handler)) {
   if (!modperl_handler_parse(aTHX_ handler)) {
   MP_TRACE_h(MP_FUNC, "failed to parse handler `%s'\n",
  @@ -278,12 +292,6 @@
   status = HTTP_INTERNAL_SERVER_ERROR;
   }
   
  -/* XXX: since the interpreter from which this data was allocated
  - * can be knocked off (PerlInterpMax{Spare,Requests}, the parse caching
  - * is broken.
  - */
  -modperl_handler_unparse(handler);
  -
   return status;
   }
   
  @@ -303,6 +311,7 @@
   MP_dSCFG(s);
   MP_dDCFG;
   modperl_handler_t **handlers;
  +ap_pool_t *p = NULL;
   MpAV *av = NULL;
   int i, status = OK;
   const char *desc = NULL;
  @@ -338,6 +347,7 @@
   
   #ifdef USE_ITHREADS
   if (r || c) {
  +p = c ? c->pool : r->pool;
   interp = modperl_interp_select(r, c, s);
   aTHX = interp->perl;
   }
  @@ -353,7 +363,7 @@
   handlers = (modperl_handler_t **)av->elts;
   
   for (i=0; inelts; i++) {
  -status = modperl_callback(aTHX_ handlers[i]);
  +status = modperl_callback(aTHX_ handlers[i], p);
   MP_TRACE_h(MP_FUNC, "%s returned %d\n",
  handlers[i]->name, status);
   }
  
  
  
  1.6   +1 -1  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.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- modperl_callback.h2000/04/27 22:02:04 1.5
  +++ modperl_callback.h2000/05/26 20:34:49 1.6
  @@ -23,7 +23,7 @@
   
   int modperl_handler_parse(pTHX_ modperl_handler_t *handler);
   
  -int modperl_callback(pTHX_ modperl_handler_t *handler);
  +int modperl_callback(pTHX_ modperl_handler_t *handler, ap_pool_t *p);
   
   void modperl_process_callback(int idx, ap_pool_t *p, server_rec *s);
   
  
  
  
  1.13  +6 -3  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.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- modperl_interp.c  2000/05/23 20:54:44 1.12
  +++ modperl_interp.c  2000/05/26 20:34:49 1.13
  @@ -88,11 +88,13 @@
   MP_TRACE_i(MP_FUNC, "selected 0x%lx (perl==0x%lx)\n",
  (unsigned long)interp,
  (unsigned long)interp->perl);
  -#ifdef _PTHREAD_H
  -MP_TRACE_i(MP_FUNC, "pthread_self == 0x%lx\n",
  -   (unsigned long)pthread_self());
  +
  +#ifdef MP_TRACE
  +interp->tid = MP_TIDF;
   #endif
   
  +MP_TRACE_i(MP_FUNC, "thread == 0x%lx\n", interp->tid);
  +
   MpInterpIN_USE_On(interp);
   
   return interp;
  @@ -117,6 +119,7 @@
   static void *interp_pool_grow(modperl_tipool_t *tipool, void *data)
   {
   modperl_interp_pool_t *mip = (modperl_interp_pool_t *)data;
  +MP_TRACE_i(MP_FUNC, "adding new interpreter to the pool\n");
   return (void *)modperl_interp_new(mip->ap_pool, mip, mip->parent->perl);
   }
   
  
  
  
  1.3   +9 -0  modperl-2.0/src/modules/perl/modperl_log.h
  
  Index: modperl_log.h
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modpe