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

2001-04-19 Thread dougm

dougm   01/04/19 10:57:17

  Modified:src/modules/perl modperl_callback.c modperl_handler.c
modperl_handler.h
  Log:
  move handler resolver code into modperl_handler_resolve routine
  
  Revision  ChangesPath
  1.41  +3 -34 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.40
  retrieving revision 1.41
  diff -u -r1.40 -r1.41
  --- modperl_callback.c2001/04/13 01:10:20 1.40
  +++ modperl_callback.c2001/04/19 17:57:14 1.41
  @@ -6,41 +6,10 @@
   CV *cv=Nullcv;
   I32 flags = G_EVAL|G_SCALAR;
   dSP;
  -int count, status, duped=0;
  +int count, status;
   
  -#ifdef USE_ITHREADS
  -if (p  !MpHandlerPARSED(handler)  !MpHandlerDYNAMIC(handler)) {
  -MP_dSCFG(s);
  -if (scfg-threaded_mpm) {
  -/*
  - * cannot update the handler structure at request time without
  - * locking, so just copy it
  - */
  -handler = modperl_handler_dup(p, handler);
  -duped = 1;
  -}
  -}
  -#endif
  -
  -MP_TRACE_h_do(MpHandler_dump_flags(handler, handler-name));
  -
  -if (!MpHandlerPARSED(handler)) {
  -apr_pool_t *rp = duped ? p : s-process-pconf;
  -MpHandlerAUTOLOAD_On(handler);
  -
  -MP_TRACE_h(MP_FUNC,
  -   "handler %s was not compiled at startup, "
  -   "attempting to resolve using %s pool 0x%lx\n",
  -   handler-name,
  -   duped ? "current" : "server conf",
  -   (unsigned long)rp);
  -
  -if (!modperl_mgv_resolve(aTHX_ handler, rp, handler-name)) {
  -ap_log_error(APLOG_MARK, APLOG_ERR, 0, s, 
  - "failed to resolve handler `%s'",
  - handler-name);
  -return HTTP_INTERNAL_SERVER_ERROR;
  -}
  +if ((status = modperl_handler_resolve(aTHX_ handler, p, s)) != OK) {
  +return status;
   }
   
   ENTER;SAVETMPS;
  
  
  
  1.9   +44 -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.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- modperl_handler.c 2001/04/12 03:24:45 1.8
  +++ modperl_handler.c 2001/04/19 17:57:15 1.9
  @@ -11,6 +11,50 @@
   return handler;
   }
   
  +int modperl_handler_resolve(pTHX_ modperl_handler_t **handp,
  +apr_pool_t *p, server_rec *s)
  +{
  +int duped=0;
  +modperl_handler_t *handler = *handp;
  +
  +#ifdef USE_ITHREADS
  +if (p  !MpHandlerPARSED(handler)  !MpHandlerDYNAMIC(handler)) {
  +MP_dSCFG(s);
  +if (scfg-threaded_mpm) {
  +/*
  + * cannot update the handler structure at request time without
  + * locking, so just copy it
  + */
  +handler = *handp = modperl_handler_dup(p, handler);
  +duped = 1;
  +}
  +}
  +#endif
  +
  +MP_TRACE_h_do(MpHandler_dump_flags(handler, handler-name));
  +
  +if (!MpHandlerPARSED(handler)) {
  +apr_pool_t *rp = duped ? p : s-process-pconf;
  +MpHandlerAUTOLOAD_On(handler);
  +
  +MP_TRACE_h(MP_FUNC,
  +   "handler %s was not compiled at startup, "
  +   "attempting to resolve using %s pool 0x%lx\n",
  +   handler-name,
  +   duped ? "current" : "server conf",
  +   (unsigned long)rp);
  +
  +if (!modperl_mgv_resolve(aTHX_ handler, rp, handler-name)) {
  +ap_log_error(APLOG_MARK, APLOG_ERR, 0, s, 
  + "failed to resolve handler `%s'",
  + handler-name);
  +return HTTP_INTERNAL_SERVER_ERROR;
  +}
  +}
  +
  +return OK;
  +}
  +
   modperl_handler_t *modperl_handler_dup(apr_pool_t *p,
  modperl_handler_t *h)
   {
  
  
  
  1.7   +3 -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.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- modperl_handler.h 2001/03/26 01:08:29 1.6
  +++ modperl_handler.h 2001/04/19 17:57:15 1.7
  @@ -21,6 +21,9 @@
   
   modperl_handler_t *modperl_handler_new(apr_pool_t *p, const char *name);
   
  +int modperl_handler_resolve(pTHX_ modperl_handler_t **handp,
  +apr_pool_t *p, server_rec *s);
  +
   

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

2001-03-15 Thread dougm

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_callback.c modperl_handler.c modperl_handler.h

2001-03-15 Thread dougm

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 */