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 Changes Path 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.c 2001/04/13 01:10:20 1.40 +++ modperl_callback.c 2001/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); + modperl_handler_t *modperl_handler_dup(apr_pool_t *p, modperl_handler_t *h);