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);
   
  
  
  

Reply via email to