cvs commit: modperl-2.0/src/modules/perl modperl_callback.c modperl_handler.c modperl_handler.h
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
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
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 */