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

2002-09-04 Thread dougm

dougm   2002/09/04 10:56:51

  Modified:src/modules/perl mod_perl.c
  Log:
  make sure MP_init_done is reset when we teardown.
  (should only matter for static linkage, but doesn't hurt with dso)
  
  Revision  ChangesPath
  1.137 +4 -2  modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.136
  retrieving revision 1.137
  diff -u -r1.136 -r1.137
  --- mod_perl.c4 Sep 2002 17:51:02 -   1.136
  +++ mod_perl.c4 Sep 2002 17:56:50 -   1.137
   -354,8 +354,12 
   return APR_SUCCESS;
   }
   
  +static int MP_init_done = 0;
  +
   static apr_status_t modperl_sys_term(void *data)
   {
  +MP_init_done = 0;
  +
   modperl_env_unload();
   
   modperl_perl_pp_unset_all();
   -365,8 +369,6 
   #endif
   return APR_SUCCESS;
   }
  -
  -static int MP_init_done = 0;
   
   int modperl_hook_init(apr_pool_t *pconf, apr_pool_t *plog, 
 apr_pool_t *ptemp, server_rec *s)
  
  
  



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

2002-07-10 Thread dougm

dougm   2002/07/10 19:06:11

  Modified:src/modules/perl mod_perl.c
  Log:
  fix for non-ithread perls
  
  Revision  ChangesPath
  1.131 +1 -1  modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.130
  retrieving revision 1.131
  diff -u -r1.130 -r1.131
  --- mod_perl.c29 Jun 2002 20:38:33 -  1.130
  +++ mod_perl.c11 Jul 2002 02:06:11 -  1.131
   -654,8 +654,8 
   MP_dDCFG;
   GV *h_stdin, *h_stdout;
   int retval;
  -#ifdef USE_ITHREADS
   MP_dRCFG;
  +#ifdef USE_ITHREADS
   pTHX;
   modperl_interp_t *interp;
   #endif
  
  
  



cvs commit: modperl-2.0/src/modules/perl mod_perl.c modperl_cgi.c modperl_filter.c modperl_types.h

2002-06-29 Thread dougm

dougm   2002/06/29 13:38:33

  Modified:src/modules/perl mod_perl.c modperl_cgi.c modperl_filter.c
modperl_types.h
  Log:
  add support for redirects with PerlOptions +ParseHeaders
  
  Revision  ChangesPath
  1.130 +7 -0  modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.129
  retrieving revision 1.130
  diff -u -r1.129 -r1.130
  --- mod_perl.c28 Jun 2002 19:15:51 -  1.129
  +++ mod_perl.c29 Jun 2002 20:38:33 -  1.130
   -709,6 +709,13 
   /* flush output buffer after interpreter is putback */
   modperl_response_finish(r);
   
  +switch (rcfg-status) {
  +  case HTTP_MOVED_TEMPORARILY:
  +/* set by modperl_cgi_header_parse */
  +retval = HTTP_MOVED_TEMPORARILY;
  +break;
  +}
  +
   return retval;
   }
   
  
  
  
  1.2   +33 -0 modperl-2.0/src/modules/perl/modperl_cgi.c
  
  Index: modperl_cgi.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_cgi.c,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- modperl_cgi.c 8 May 2001 18:04:36 -   1.1
  +++ modperl_cgi.c 29 Jun 2002 20:38:33 -  1.2
   -5,6 +5,7 
   {
   int status;
   int termarg;
  +const char *location;
   
   if (!buffer) {
   return DECLINED;
   -12,6 +13,38 
   
   status = ap_scan_script_header_err_strs(r, NULL, bodytext,
   termarg, buffer, NULL);
  +
  +/* code below from mod_cgi.c */
  +location = apr_table_get(r-headers_out, Location);
  +
  +if (location  (location[0] == '/')  (r-status == 200)) {
  +r-method = apr_pstrdup(r-pool, GET);
  +r-method_number = M_GET;
  +
  +/* We already read the message body (if any), so don't allow
  + * the redirected request to think it has one.  We can ignore 
  + * Transfer-Encoding, since we used REQUEST_CHUNKED_ERROR.
  + */
  +apr_table_unset(r-headers_in, Content-Length);
  +
  +ap_internal_redirect_handler(location, r);
  +
  +return OK;
  +}
  +else if (location  (r-status == 200)) {
  +MP_dRCFG;
  +
  +/* Note that if a script wants to produce its own Redirect
  + * body, it now has to explicitly *say* Status: 302
  + */
  +
  +/* XXX: this is a hack.
  + * filter return value doesn't seem to impact anything.
  + */
  +rcfg-status = HTTP_MOVED_TEMPORARILY;
  +
  +return HTTP_MOVED_TEMPORARILY;
  +}
   
   return status;
   }
  
  
  
  1.36  +4 -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.35
  retrieving revision 1.36
  diff -u -r1.35 -r1.36
  --- modperl_filter.c  30 May 2002 02:33:48 -  1.35
  +++ modperl_filter.c  29 Jun 2002 20:38:33 -  1.36
   -14,7 +14,10 
   const char *bodytext = NULL;
   int status = modperl_cgi_header_parse(r, (char *)buf, bodytext);
   
  -if (status != OK) {
  +if (status == HTTP_MOVED_TEMPORARILY) {
  +return APR_SUCCESS; /* XXX: HTTP_MOVED_TEMPORARILY ? */
  +}
  +else if (status != OK) {
   ap_log_error(APLOG_MARK, APLOG_WARNING|APLOG_NOERRNO,
0, r-server, %s did not send an HTTP header,
r-uri);
  
  
  
  1.60  +1 -0  modperl-2.0/src/modules/perl/modperl_types.h
  
  Index: modperl_types.h
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_types.h,v
  retrieving revision 1.59
  retrieving revision 1.60
  diff -u -r1.59 -r1.60
  --- modperl_types.h   21 Jun 2002 03:02:54 -  1.59
  +++ modperl_types.h   29 Jun 2002 20:38:33 -  1.60
   -205,6 +205,7 
   HV *pnotes;
   SV *global_request_obj;
   U8 flags;
  +int status;
   modperl_wbucket_t *wbucket;
   MpAV *handlers_per_dir[MP_HANDLER_NUM_PER_DIR];
   MpAV *handlers_per_srv[MP_HANDLER_NUM_PER_SRV];
  
  
  



cvs commit: modperl-2.0/src/modules/perl mod_perl.c modperl_interp.c modperl_util.c modperl_util.h

2002-06-20 Thread dougm

dougm   2002/06/20 17:44:24

  Modified:src/modules/perl mod_perl.c modperl_interp.c modperl_util.c
modperl_util.h
  Log:
  use our own modperl_sys_dlclose instead of apr_dso_unload which
  requires us to create our own pool.
  
  Revision  ChangesPath
  1.127 +3 -5  modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.126
  retrieving revision 1.127
  diff -u -r1.126 -r1.127
  --- mod_perl.c16 Jun 2002 01:07:37 -  1.126
  +++ mod_perl.c21 Jun 2002 00:44:24 -  1.127
   -5,18 +5,16 
   {
   modperl_cleanup_data_t *cdata = (modperl_cleanup_data_t *)data;
   PerlInterpreter *perl = (PerlInterpreter *)cdata-data;
  -apr_array_header_t *handles;
  +void **handles;
   
  -handles = modperl_xs_dl_handles_get(aTHX_ cdata-pool);
  +handles = modperl_xs_dl_handles_get(aTHX);
   
   MP_TRACE_i(MP_FUNC, destroying interpreter=0x%lx\n,
  (unsigned long)perl);
   
   modperl_perl_destruct(perl);
   
  -if (handles) {
  -modperl_xs_dl_handles_close(cdata-pool, handles);
  -}
  +modperl_xs_dl_handles_close(handles);
   
   modperl_env_unload();
   
  
  
  
  1.47  +3 -14 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.46
  retrieving revision 1.47
  diff -u -r1.46 -r1.47
  --- modperl_interp.c  17 Jun 2002 20:00:44 -  1.46
  +++ modperl_interp.c  21 Jun 2002 00:44:24 -  1.47
   -80,8 +80,7 
   
   void modperl_interp_destroy(modperl_interp_t *interp)
   {
  -apr_pool_t *p = NULL;
  -apr_array_header_t *handles;
  +void **handles;
   dTHXa(interp-perl);
   
   PERL_SET_CONTEXT(interp-perl);
   -93,21 +92,11 
   MP_TRACE_i(MP_FUNC, *error - still in use!*\n);
   }
   
  -/* we cant use interp-mip-ap_pool without locking
  - * apr_pool_create() will mutex lock for us
  - * XXX: could roll something without using apr_pool_t
  - * to avoid locking
  - */
  -(void)apr_pool_create(p, NULL);
  -handles = modperl_xs_dl_handles_get(aTHX_ p);
  +handles = modperl_xs_dl_handles_get(aTHX);
   
   modperl_perl_destruct(interp-perl);
   
  -if (handles) {
  -modperl_xs_dl_handles_close(p, handles);
  -}
  -
  -apr_pool_destroy(p);
  +modperl_xs_dl_handles_close(handles);
   }
   
   apr_status_t modperl_interp_cleanup(void *data)
  
  
  
  1.47  +12 -13modperl-2.0/src/modules/perl/modperl_util.c
  
  Index: modperl_util.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_util.c,v
  retrieving revision 1.46
  retrieving revision 1.47
  diff -u -r1.46 -r1.47
  --- modperl_util.c19 Jun 2002 05:18:04 -  1.46
  +++ modperl_util.c21 Jun 2002 00:44:24 -  1.47
   -300,12 +300,12 
   }
   }
   
  -apr_array_header_t *modperl_xs_dl_handles_get(pTHX_ apr_pool_t *p)
  +void **modperl_xs_dl_handles_get(pTHX)
   {
   I32 i;
   AV *librefs = get_av(dl_librefs, FALSE);
   AV *modules = get_av(dl_modules, FALSE);
  -apr_array_header_t *handles;
  +void **handles;
   
   if (!librefs) {
MP_TRACE_g(MP_FUNC,
   -319,7 +319,7 
   return NULL;
   }
   
  -handles = apr_array_make(p, AvFILL(librefs)-1, sizeof(void *));
  +handles = (void **)malloc(sizeof(void *) * (AvFILL(librefs)+2));
   
   for (i=0; i=AvFILL(librefs); i++) {
void *handle;
   -337,17 +337,19 
MP_TRACE_g(MP_FUNC, %s dl handle == 0x%lx\n,
  SvPVX(module_sv), (unsigned long)handle);
if (handle) {
  - *(void **)apr_array_push(handles) = handle;
  + handles[i] = handle;
}
   }
   
   av_clear(modules);
   av_clear(librefs);
   
  +handles[i] = (void *)0;
  +
   return handles;
   }
   
  -void modperl_xs_dl_handles_close(apr_pool_t *p, apr_array_header_t *handles)
  +void modperl_xs_dl_handles_close(void **handles)
   {
   int i;
   
   -355,15 +357,12 
return;
   }
   
  -for (i=0; i  handles-nelts; i++) {
  -apr_dso_handle_t *dso = NULL;
  -void *handle = ((void **)handles-elts)[i];
  -
  -MP_TRACE_g(MP_FUNC, close 0x%lx\n, (unsigned long)handle);
  -
  -apr_os_dso_handle_put(dso, (apr_os_dso_handle_t )handle, p);
  -apr_dso_unload(dso);
  +for (i=0; handles[i]; i++) {
  +MP_TRACE_g(MP_FUNC, close 0x%lx\n, (unsigned long)handles[i]);
  +modperl_sys_dlclose(handles[i]);
   }
  +
  +free(handles);
   }
   
   modperl_cleanup_data_t 

cvs commit: modperl-2.0/src/modules/perl mod_perl.c modperl_interp.c

2002-06-20 Thread dougm

dougm   2002/06/20 21:16:51

  Modified:src/modules/perl mod_perl.c modperl_interp.c
  Log:
  move modperl_pp_{set,unset}_all and modperl_init_{init,unload} to
  modperl_sys_{init,term} functions that only happen once per-parent
  process
  
  Revision  ChangesPath
  1.128 +16 -5 modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.127
  retrieving revision 1.128
  diff -u -r1.127 -r1.128
  --- mod_perl.c21 Jun 2002 00:44:24 -  1.127
  +++ mod_perl.c21 Jun 2002 04:16:51 -  1.128
   -202,10 +202,6 
   return;
   }
   
  -modperl_perl_pp_set_all();
  -
  -modperl_env_init();
  -
   base_perl = modperl_startup(base_server, p);
   
   #ifdef USE_ITHREADS
   -330,6 +326,10 
   modperl_tls_create_request_rec(pconf);
   }
   
  +/*
  + * modperl_sys_{init,term} are things that happen
  + * once per-parent process, not per-interpreter
  + */
   static apr_status_t modperl_sys_init(void)
   {
   #if 0 /*XXX*/
   -345,11 +345,22 
   }
   #endif
   #endif
  +
  +/* modifies PL_ppaddr */
  +modperl_perl_pp_set_all();
  +
  +/* modifies PL_vtbl_env{elem} */
  +modperl_env_init();
  +
   return APR_SUCCESS;
   }
   
   static apr_status_t modperl_sys_term(void *data)
   {
  +modperl_env_unload();
  +
  +modperl_perl_pp_unset_all();
  +
   #if 0 /*XXX*/
   PERL_SYS_TERM();
   #endif
   -362,7 +373,7 
   apr_pool_create(server_pool, pconf);
   
   modperl_sys_init();
  -apr_pool_cleanup_register(server_pool, NULL,
  +apr_pool_cleanup_register(pconf, NULL,
 modperl_sys_term, apr_pool_cleanup_null);
   modperl_init_globals(s, pconf);
   modperl_init(s, pconf);
  
  
  
  1.50  +0 -4  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.49
  retrieving revision 1.50
  diff -u -r1.49 -r1.50
  --- modperl_interp.c  21 Jun 2002 03:46:46 -  1.49
  +++ modperl_interp.c  21 Jun 2002 04:16:51 -  1.50
   -152,10 +152,6 
   modperl_interp_destroy(mip-parent);
   }
   
  -modperl_env_unload();
  -
  -modperl_perl_pp_unset_all();
  -
   return APR_SUCCESS;
   }
   
  
  
  



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

2002-06-15 Thread dougm

dougm   2002/06/15 13:59:06

  Modified:src/modules/perl mod_perl.c
  Log:
  fix modperl_boot prototype
  
  Revision  ChangesPath
  1.125 +1 -2  modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.124
  retrieving revision 1.125
  diff -u -r1.124 -r1.125
  --- mod_perl.c12 Jun 2002 21:13:10 -  1.124
  +++ mod_perl.c15 Jun 2002 20:59:06 -  1.125
   -95,11 +95,10 
   
   #endif /* MP_REFGEN_FIXUP */
   
  -static void modperl_boot(void *data)
  +static void modperl_boot(pTHX_ void *data)
   {
   MP_dBOOT_DATA;
   MP_dSCFG(s);
  -dTHX; /* XXX: not too worried since this only happens at startup */
   int i;
   
   #ifdef MP_REFGEN_FIXUP
  
  
  



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

2002-06-12 Thread dougm

dougm   2002/06/12 14:13:11

  Modified:src/modules/perl mod_perl.c
  Log:
  unbuffer STDERR
  
  Revision  ChangesPath
  1.124 +2 -0  modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.123
  retrieving revision 1.124
  diff -u -r1.123 -r1.124
  --- mod_perl.c6 Jun 2002 16:45:41 -   1.123
  +++ mod_perl.c12 Jun 2002 21:13:10 -  1.124
   -129,6 +129,8 
*/
   modperl_require_module(aTHX_ DynaLoader, FALSE);
   #endif
  +
  +IoFLUSH_on(PL_stderrgv); /* unbuffer STDERR */
   }
   
   static void modperl_xs_init(pTHX)
  
  
  



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

2002-06-06 Thread dougm

dougm   2002/06/06 09:45:41

  Modified:src/modules/perl mod_perl.c
  Log:
  need to run open_logs,post_config,child_init hooks APR_HOOKS_FIRST so
  they are run before those in modperl_hooks.c
  
  Revision  ChangesPath
  1.123 +3 -3  modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.122
  retrieving revision 1.123
  diff -u -r1.122 -r1.123
  --- mod_perl.c4 Jun 2002 16:16:50 -   1.122
  +++ mod_perl.c6 Jun 2002 16:45:41 -   1.123
   -530,10 +530,10 
  NULL, NULL, APR_HOOK_MIDDLE);
   
   ap_hook_open_logs(modperl_hook_init,
  -  NULL, NULL, APR_HOOK_MIDDLE);
  +  NULL, NULL, APR_HOOK_FIRST);
   
   ap_hook_post_config(modperl_hook_post_config,
  -NULL, NULL, APR_HOOK_MIDDLE);
  +NULL, NULL, APR_HOOK_FIRST);
   
   ap_hook_handler(modperl_response_handler,
   NULL, NULL, APR_HOOK_MIDDLE);
   -576,7 +576,7 
 NULL, NULL, APR_HOOK_FIRST);
   
   ap_hook_child_init(modperl_hook_child_init,
  -   NULL, NULL, APR_HOOK_MIDDLE);
  +   NULL, NULL, APR_HOOK_FIRST);
   
   modperl_register_handler_hooks();
   }
  
  
  



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

2002-06-04 Thread dougm

dougm   2002/06/04 09:16:51

  Modified:src/modules/perl mod_perl.c
  Log:
  need to copy MODPERL2 for the ap_server_config_defines
  
  Revision  ChangesPath
  1.122 +2 -1  modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.121
  retrieving revision 1.122
  diff -u -r1.121 -r1.122
  --- mod_perl.c3 Jun 2002 23:41:18 -   1.121
  +++ mod_perl.c4 Jun 2002 16:16:50 -   1.122
   -426,7 +426,8 
   apr_pool_t *ptemp)
   {
   /* for IfDefine MODPERL2 and Apache-define(MODPERL2) */
  -*(char **)apr_array_push(ap_server_config_defines) = MODPERL2;
  +*(char **)apr_array_push(ap_server_config_defines) =
  +apr_pstrdup(p, MODPERL2);
   
   /* XXX: htf can we have PerlPreConfigHandler
* without first configuring mod_perl ?
  
  
  



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

2002-06-03 Thread dougm

dougm   2002/06/03 16:41:18

  Modified:src/modules/perl mod_perl.c mod_perl.h
  Log:
  add MODPERL2 config define, as if the server had been started with -DMODPERL2
  
  Revision  ChangesPath
  1.121 +10 -2 modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.120
  retrieving revision 1.121
  diff -u -r1.120 -r1.121
  --- mod_perl.c30 May 2002 23:35:02 -  1.120
  +++ mod_perl.c3 Jun 2002 23:41:18 -   1.121
   -422,12 +422,17 
   return OK;
   }
   
  -void modperl_pre_config_handler(apr_pool_t *p, apr_pool_t *plog,
  -apr_pool_t *ptemp)
  +int modperl_hook_pre_config(apr_pool_t *p, apr_pool_t *plog,
  +apr_pool_t *ptemp)
   {
  +/* for IfDefine MODPERL2 and Apache-define(MODPERL2) */
  +*(char **)apr_array_push(ap_server_config_defines) = MODPERL2;
  +
   /* XXX: htf can we have PerlPreConfigHandler
* without first configuring mod_perl ?
*/
  +
  +return OK;
   }
   
   static int modperl_hook_pre_connection(conn_rec *c, void *csd)
   -520,6 +525,9 
   
   void modperl_register_hooks(apr_pool_t *p)
   {
  +ap_hook_pre_config(modperl_hook_pre_config,
  +   NULL, NULL, APR_HOOK_MIDDLE);
  +
   ap_hook_open_logs(modperl_hook_init,
 NULL, NULL, APR_HOOK_MIDDLE);
   
  
  
  
  1.44  +2 -2  modperl-2.0/src/modules/perl/mod_perl.h
  
  Index: mod_perl.h
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.h,v
  retrieving revision 1.43
  retrieving revision 1.44
  diff -u -r1.43 -r1.44
  --- mod_perl.h31 May 2002 15:41:11 -  1.43
  +++ mod_perl.h3 Jun 2002 23:41:18 -   1.44
   -64,8 +64,8 
   void modperl_init(server_rec *s, apr_pool_t *p);
   int modperl_hook_init(apr_pool_t *pconf, apr_pool_t *plog, 
 apr_pool_t *ptemp, server_rec *s);
  -void modperl_pre_config_handler(apr_pool_t *p, apr_pool_t *plog,
  -apr_pool_t *ptemp);
  +int modperl_hook_pre_config(apr_pool_t *p, apr_pool_t *plog,
  +apr_pool_t *ptemp);
   void modperl_register_hooks(apr_pool_t *p);
   apr_pool_t *modperl_server_pool(void);
   PerlInterpreter *modperl_startup(server_rec *s, apr_pool_t *p);
  
  
  



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

2002-05-23 Thread dougm

dougm   02/05/23 16:01:55

  Modified:src/modules/perl mod_perl.c
  Log:
  pp_srefgen workaround should be applied to 5.6.x not just 5.6.1
  
  Revision  ChangesPath
  1.119 +1 -1  modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.118
  retrieving revision 1.119
  diff -u -r1.118 -r1.119
  --- mod_perl.c23 May 2002 22:40:47 -  1.118
  +++ mod_perl.c23 May 2002 23:01:55 -  1.119
   -42,7 +42,7 
   apr_pool_t *p = MP_boot_data.p; \
   server_rec *s = MP_boot_data.s
   
  -#if defined(USE_ITHREADS)  defined(MP_PERL_5_6_1)
  +#if defined(USE_ITHREADS)  defined(MP_PERL_5_6_x)
   #   define MP_REFGEN_FIXUP
   #endif
   
  
  
  



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

2002-04-05 Thread dougm

dougm   02/04/05 17:23:17

  Modified:src/modules/perl mod_perl.c
  Log:
  use AP_FTYPE_RESOURCE rather than AP_FTYPE_CONTENT_SET
  
  Revision  ChangesPath
  1.111 +2 -2  modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.110
  retrieving revision 1.111
  diff -u -r1.110 -r1.111
  --- mod_perl.c6 Apr 2002 01:19:15 -   1.110
  +++ mod_perl.c6 Apr 2002 01:23:17 -   1.111
   -504,11 +504,11 
   
   ap_register_output_filter(MP_FILTER_REQUEST_OUTPUT_NAME,
 modperl_output_filter_handler,
  -  AP_FTYPE_CONTENT_SET);
  +  AP_FTYPE_RESOURCE);
   
   ap_register_input_filter(MP_FILTER_REQUEST_INPUT_NAME,
modperl_input_filter_handler,
  - AP_FTYPE_CONTENT_SET);
  + AP_FTYPE_RESOURCE);
   
   ap_register_output_filter(MP_FILTER_CONNECTION_OUTPUT_NAME,
 modperl_output_filter_handler,
  
  
  



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

2002-03-09 Thread dougm

dougm   02/03/09 16:09:52

  Modified:src/modules/perl mod_perl.c modperl_filter.c
  Log:
  Submitted by:   Philippe M. Chiasson [EMAIL PROTECTED]
  Reviewed by:  dougm
  sync with filter name changes
  
  Revision  ChangesPath
  1.109 +2 -2  modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.108
  retrieving revision 1.109
  diff -u -r1.108 -r1.109
  --- mod_perl.c26 Feb 2002 19:01:38 -  1.108
  +++ mod_perl.c10 Mar 2002 00:09:52 -  1.109
  @@ -504,11 +504,11 @@
   
   ap_register_output_filter(MODPERL_OUTPUT_FILTER_NAME,
 modperl_output_filter_handler,
  -  AP_FTYPE_CONTENT);
  +  AP_FTYPE_CONTENT_SET);
   
   ap_register_input_filter(MODPERL_INPUT_FILTER_NAME,
modperl_input_filter_handler,
  - AP_FTYPE_CONTENT);
  + AP_FTYPE_CONTENT_SET);
   
   ap_hook_pre_connection(modperl_hook_pre_connection,
  NULL, NULL, APR_HOOK_FIRST);
  
  
  
  1.32  +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.31
  retrieving revision 1.32
  diff -u -r1.31 -r1.32
  --- modperl_filter.c  25 Jan 2002 04:04:22 -  1.31
  +++ modperl_filter.c  10 Mar 2002 00:09:52 -  1.32
  @@ -506,7 +506,7 @@
   
   ctx = (modperl_filter_ctx_t *)apr_pcalloc(r-pool, sizeof(*ctx));
   ctx-handler = handlers[i];
  -addfunc(name, (void*)ctx, r, NULL);
  +addfunc(name, (void*)ctx, r, r-connection);
   }
   
   return OK;
  
  
  



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

2002-01-17 Thread stas

stas02/01/17 22:50:10

  Modified:src/modules/perl mod_perl.c
  Log:
  - modperl_startup() already handles PerlModule/Require directives, so
  handle these separately inly if modperl_startup() wasn't called. which is
  the case for vhosts which inherit the perl interpretor from the base.
  
  Revision  ChangesPath
  1.105 +8 -7  modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.104
  retrieving revision 1.105
  diff -u -r1.104 -r1.105
  --- mod_perl.c9 Jan 2002 00:31:39 -   1.104
  +++ mod_perl.c18 Jan 2002 06:50:10 -  1.105
  @@ -264,14 +264,15 @@
  created parent interpreter for VirtualHost %s\n,
  modperl_server_desc(s, p));
   }
  -
  -if (!modperl_config_apply_PerlModule(s, scfg, perl, p)) {
  -exit(1);
  -}
  -if (!modperl_config_apply_PerlRequire(s, scfg, perl, p)) {
  -exit(1);
  +else {
  +if (!modperl_config_apply_PerlModule(s, scfg, perl, p)) {
  +exit(1);
  +}
  +if (!modperl_config_apply_PerlRequire(s, scfg, perl, p)) {
  +exit(1);
  +}
   }
  -
  +
   #ifdef USE_ITHREADS
   
   if (!MpSrvENABLE(scfg)) {
  
  
  



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

2002-01-08 Thread dougm

dougm   02/01/08 16:31:39

  Modified:src/modules/perl mod_perl.c
  Log:
  rid warning #ifdef USE_ITHREADS
  
  Revision  ChangesPath
  1.104 +1 -1  modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.103
  retrieving revision 1.104
  diff -u -r1.103 -r1.104
  --- mod_perl.c8 Jan 2002 01:13:28 -   1.103
  +++ mod_perl.c9 Jan 2002 00:31:39 -   1.104
  @@ -640,10 +640,10 @@
   int modperl_response_handler_cgi(request_rec *r)
   {
   MP_dDCFG;
  -MP_dRCFG;
   GV *h_stdin, *h_stdout;
   int retval;
   #ifdef USE_ITHREADS
  +MP_dRCFG;
   pTHX;
   modperl_interp_t *interp;
   #endif
  
  
  



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

2002-01-07 Thread dougm

dougm   02/01/07 17:13:29

  Modified:src/modules/perl mod_perl.c mod_perl.h modperl_interp.c
  Log:
  fix so perl_destruct (and things like END blocks) are run in child
  processes when they are shutdown
  
  Revision  ChangesPath
  1.103 +30 -3 modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.102
  retrieving revision 1.103
  diff -u -r1.102 -r1.103
  --- mod_perl.c6 Jan 2002 21:39:36 -   1.102
  +++ mod_perl.c8 Jan 2002 01:13:28 -   1.103
  @@ -128,6 +128,20 @@
   SAVEDESTRUCTOR_X(modperl_boot, 0);
   }
   
  +/*
  + * the server_pool is a subpool of the parent pool (aka pconf)
  + * this is where we register the cleanups that teardown the interpreter.
  + * the parent process will run the cleanups since server_pool is a subpool
  + * of pconf.  we manually clear the server_pool to run cleanups in the
  + * child processes
  + */
  +static apr_pool_t *server_pool = NULL;
  +
  +apr_pool_t *modperl_server_pool(void)
  +{
  +return server_pool;
  +}
  +
   PerlInterpreter *modperl_startup(server_rec *s, apr_pool_t *p)
   {
   AV *endav;
  @@ -198,8 +212,8 @@
   }
   
   #ifndef USE_ITHREADS
  -cdata = modperl_cleanup_data_new(p, (void*)perl);
  -apr_pool_cleanup_register(p, cdata,
  +cdata = modperl_cleanup_data_new(server_pool, (void*)perl);
  +apr_pool_cleanup_register(server_pool, cdata,
 modperl_shutdown, apr_pool_cleanup_null);
   #endif
   
  @@ -380,8 +394,10 @@
   int modperl_hook_init(apr_pool_t *pconf, apr_pool_t *plog, 
 apr_pool_t *ptemp, server_rec *s)
   {
  +apr_pool_create(server_pool, pconf);
  +
   modperl_sys_init();
  -apr_pool_cleanup_register(pconf, NULL,
  +apr_pool_cleanup_register(server_pool, NULL,
 modperl_sys_term, apr_pool_cleanup_null);
   modperl_init_globals(s, pconf);
   modperl_init(s, pconf);
  @@ -461,9 +477,20 @@
   return OK;
   }
   
  +static apr_status_t modperl_child_exit(void *data)
  +{
  +apr_pool_clear(server_pool);
  +server_pool = NULL;
  +
  +return APR_SUCCESS;
  +}
  +
   static void modperl_hook_child_init(apr_pool_t *p, server_rec *s)
   {
   modperl_perl_init_ids_server(s);
  +
  +apr_pool_cleanup_register(p, NULL, modperl_child_exit,
  +  apr_pool_cleanup_null);
   }
   
   void modperl_register_hooks(apr_pool_t *p)
  
  
  
  1.40  +1 -0  modperl-2.0/src/modules/perl/mod_perl.h
  
  Index: mod_perl.h
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.h,v
  retrieving revision 1.39
  retrieving revision 1.40
  diff -u -r1.39 -r1.40
  --- mod_perl.h24 Nov 2001 01:15:01 -  1.39
  +++ mod_perl.h8 Jan 2002 01:13:28 -   1.40
  @@ -45,6 +45,7 @@
   void modperl_pre_config_handler(apr_pool_t *p, apr_pool_t *plog,
   apr_pool_t *ptemp);
   void modperl_register_hooks(apr_pool_t *p);
  +apr_pool_t *modperl_server_pool(void);
   PerlInterpreter *modperl_startup(server_rec *s, apr_pool_t *p);
   void xs_init(pTHXo);
   
  
  
  
  1.39  +2 -1  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.38
  retrieving revision 1.39
  diff -u -r1.38 -r1.39
  --- modperl_interp.c  5 Nov 2001 05:19:01 -   1.38
  +++ modperl_interp.c  8 Jan 2002 01:13:28 -   1.39
  @@ -191,6 +191,7 @@
   void modperl_interp_init(server_rec *s, apr_pool_t *p,
PerlInterpreter *perl)
   {
  +apr_pool_t *server_pool = modperl_server_pool();
   pTHX;
   MP_dSCFG(s);
   
  @@ -210,7 +211,7 @@
   /* this happens post-config in mod_perl.c:modperl_init_clones() */
   /* modperl_tipool_init(tipool); */
   
  -apr_pool_cleanup_register(p, (void*)mip,
  +apr_pool_cleanup_register(server_pool, (void*)mip,
 modperl_interp_pool_destroy,
 apr_pool_cleanup_null);
   
  
  
  



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

2001-12-22 Thread dougm

dougm   01/12/22 21:46:29

  Modified:src/modules/perl mod_perl.c modperl_perl_includes.h
  Log:
  nasty workaround for bug fixed in bleedperl (11536 + 11553) in
  $foo = \*STDOUT; where the reference would get a copy of STDOUT
  without the tie magic.
  
  (recentish changes that re-tied STDOUT every request uncovered an
  instance of the bug during 'make test')
  
  Revision  ChangesPath
  1.100 +55 -0 modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.99
  retrieving revision 1.100
  diff -u -r1.99 -r1.100
  --- mod_perl.c2001/12/11 23:20:34 1.99
  +++ mod_perl.c2001/12/23 05:46:29 1.100
  @@ -42,12 +42,67 @@
   apr_pool_t *p = MP_boot_data.p; \
   server_rec *s = MP_boot_data.s
   
  +#if defined(USE_ITHREADS)  defined(MP_PERL_5_6_1)
  +#   define MP_REFGEN_FIXUP
  +#endif
  +
  +#ifdef MP_REFGEN_FIXUP
  +
  +/*
  + * nasty workaround for bug fixed in bleedperl (11536 + 11553)
  + * XXX: when 5.8.0 is released + stable, we will require 5.8.0
  + * if ithreads are enabled.
  + */
  +static OP * (*MP_pp_srefgen_ptr)(pTHX) = NULL;
  +
  +static OP *modperl_pp_srefgen(pTHX)
  +{
  +dSP;
  +OP *o;
  +SV *sv = *SP;
  +
  +if (SvPADTMP(sv)  IS_PADGV(sv)) {
  +/* prevent S_refto from making a copy of the GV,
  + * tricking it to SvREFCNT_inc and point to this one instead.
  + */
  +SvPADTMP_off(sv);
  +}
  +else {
  +sv = Nullsv;
  +}
  +
  +/* o = Perl_pp_srefgen(aTHX) */
  +o = MP_pp_srefgen_ptr(aTHX);
  +
  +if (sv) {
  +/* restore original flags */
  +SvPADTMP_on(sv);
  +}
  +
  +return o;
  +}
  +
  +static void modperl_refgen_ops_fixup(void)
  +{
  +/* XXX: OP_REFGEN suffers a similar problem */
  +if (!MP_pp_srefgen_ptr) {
  +MP_pp_srefgen_ptr = PL_ppaddr[OP_SREFGEN];
  +PL_ppaddr[OP_SREFGEN] = MEMBER_TO_FPTR(modperl_pp_srefgen);
  +}
  +}
  +
  +#endif /* MP_REFGEN_FIXUP */
  +
   static void modperl_boot(void *data)
   {
   MP_dBOOT_DATA;
   dTHX; /* XXX: not too worried since this only happens at startup */
   int i;
   
  +#ifdef MP_REFGEN_FIXUP
  +modperl_refgen_ops_fixup();
  +#endif
  +
   modperl_env_clear(aTHX);
   
   modperl_env_default_populate(aTHX);
  
  
  
  1.9   +4 -0  modperl-2.0/src/modules/perl/modperl_perl_includes.h
  
  Index: modperl_perl_includes.h
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_perl_includes.h,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- modperl_perl_includes.h   2001/11/07 03:14:54 1.8
  +++ modperl_perl_includes.h   2001/12/23 05:46:29 1.9
  @@ -35,6 +35,10 @@
   #include perl.h
   #include XSUB.h
   
  +#if (PERL_REVISION == 5)  (PERL_VERSION == 6)  (PERL_SUBVERSION == 1)
  +#   define MP_PERL_5_6_1
  +#endif
  +
   #ifdef PERL_CORE
   #   ifndef croak
   #  define croak Perl_croak_nocontext
  
  
  



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

2001-12-11 Thread dougm

dougm   01/12/11 15:20:34

  Modified:src/modules/perl mod_perl.c
  Log:
  suspend END blocks to be run at server shutdown
  
  Revision  ChangesPath
  1.99  +7 -0  modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.98
  retrieving revision 1.99
  diff -u -r1.98 -r1.99
  --- mod_perl.c2001/12/04 22:43:07 1.98
  +++ mod_perl.c2001/12/11 23:20:34 1.99
  @@ -75,6 +75,7 @@
   
   PerlInterpreter *modperl_startup(server_rec *s, apr_pool_t *p)
   {
  +AV *endav;
   dTHXa(NULL);
   MP_dSCFG(s);
   PerlInterpreter *perl;
  @@ -116,7 +117,13 @@
   exit(1);
   }
   
  +/* suspend END blocks to be run at server shutdown */
  +endav = PL_endav;
  +PL_endav = Nullav;
  +
   perl_run(perl);
  +
  +PL_endav = endav;
   
   MP_TRACE_i(MP_FUNC, constructed interpreter=0x%lx\n,
  (unsigned long)perl);
  
  
  



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

2001-12-04 Thread dougm

dougm   01/12/04 14:43:07

  Modified:src/modules/perl mod_perl.c
  Log:
  flush main output buffer before running a subrequest
  
  Revision  ChangesPath
  1.98  +6 -0  modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.97
  retrieving revision 1.98
  diff -u -r1.97 -r1.98
  --- mod_perl.c2001/11/24 01:15:01 1.97
  +++ mod_perl.c2001/12/04 22:43:07 1.98
  @@ -368,6 +368,12 @@
   
   modperl_config_req_init(r, rcfg);
   
  +if (r-main) {
  +modperl_config_req_t *main_rcfg =
  +modperl_config_req_get(r-main);
  +modperl_wbucket_flush(main_rcfg-wbucket);
  +}
  +
   return OK;
   }
   
  
  
  



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

2001-11-24 Thread dougm

dougm   01/11/23 17:15:02

  Modified:lib/ModPerl Code.pm
   src/modules/perl mod_perl.c mod_perl.h modperl_callback.c
modperl_callback.h
  Log:
  adjust to open_logs and post_config hook prototype changes
  
  Revision  ChangesPath
  1.72  +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.71
  retrieving revision 1.72
  diff -u -r1.71 -r1.72
  --- Code.pm   2001/11/05 05:19:01 1.71
  +++ Code.pm   2001/11/24 01:15:01 1.72
  @@ -33,7 +33,7 @@
{type = 'server_rec', name = 's'}],
   },
   Files  = {
  -ret  = 'void',
  +ret  = 'int',
   args = [{type = 'apr_pool_t', name = 'pconf'},
{type = 'apr_pool_t', name = 'plog'},
{type = 'apr_pool_t', name = 'ptemp'},
  
  
  
  1.97  +8 -4  modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.96
  retrieving revision 1.97
  diff -u -r1.96 -r1.97
  --- mod_perl.c2001/11/19 00:07:28 1.96
  +++ mod_perl.c2001/11/24 01:15:01 1.97
  @@ -315,14 +315,16 @@
   return APR_SUCCESS;
   }
   
  -void modperl_hook_init(apr_pool_t *pconf, apr_pool_t *plog, 
  -   apr_pool_t *ptemp, server_rec *s)
  +int modperl_hook_init(apr_pool_t *pconf, apr_pool_t *plog, 
  +  apr_pool_t *ptemp, server_rec *s)
   {
   modperl_sys_init();
   apr_pool_cleanup_register(pconf, NULL,
 modperl_sys_term, apr_pool_cleanup_null);
   modperl_init_globals(s, pconf);
   modperl_init(s, pconf);
  +
  +return OK;
   }
   
   void modperl_pre_config_handler(apr_pool_t *p, apr_pool_t *plog,
  @@ -340,8 +342,8 @@
   return OK;
   }
   
  -static void modperl_hook_post_config(apr_pool_t *pconf, apr_pool_t *plog,
  - apr_pool_t *ptemp, server_rec *s)
  +static int modperl_hook_post_config(apr_pool_t *pconf, apr_pool_t *plog,
  +apr_pool_t *ptemp, server_rec *s)
   {
   #ifdef USE_ITHREADS
   MP_dSCFG(s);
  @@ -356,6 +358,8 @@
   #ifdef USE_ITHREADS
   modperl_init_clones(s, pconf);
   #endif
  +
  +return OK;
   }
   
   static int modperl_hook_create_request(request_rec *r)
  
  
  
  1.39  +2 -2  modperl-2.0/src/modules/perl/mod_perl.h
  
  Index: mod_perl.h
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.h,v
  retrieving revision 1.38
  retrieving revision 1.39
  diff -u -r1.38 -r1.39
  --- mod_perl.h2001/09/27 19:04:38 1.38
  +++ mod_perl.h2001/11/24 01:15:01 1.39
  @@ -40,8 +40,8 @@
   #include modperl_perl.h
   
   void modperl_init(server_rec *s, apr_pool_t *p);
  -void modperl_hook_init(apr_pool_t *pconf, apr_pool_t *plog, 
  -   apr_pool_t *ptemp, server_rec *s);
  +int modperl_hook_init(apr_pool_t *pconf, apr_pool_t *plog, 
  +  apr_pool_t *ptemp, server_rec *s);
   void modperl_pre_config_handler(apr_pool_t *p, apr_pool_t *plog,
   apr_pool_t *ptemp);
   void modperl_register_hooks(apr_pool_t *p);
  
  
  
  1.47  +6 -6  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.46
  retrieving revision 1.47
  diff -u -r1.46 -r1.47
  --- modperl_callback.c2001/11/05 05:19:01 1.46
  +++ modperl_callback.c2001/11/24 01:15:01 1.47
  @@ -224,11 +224,11 @@
 p, NULL, NULL);
   }
   
  -void modperl_callback_files(int idx,
  -apr_pool_t *pconf, apr_pool_t *plog,
  -apr_pool_t *ptemp, server_rec *s)
  +int modperl_callback_files(int idx,
  +   apr_pool_t *pconf, apr_pool_t *plog,
  +   apr_pool_t *ptemp, server_rec *s)
   {
  -modperl_callback_run_handlers(idx, MP_HANDLER_TYPE_FILES,
  -  NULL, NULL, s,
  -  pconf, plog, ptemp);
  +return modperl_callback_run_handlers(idx, MP_HANDLER_TYPE_FILES,
  + NULL, NULL, s,
  + pconf, plog, ptemp);
   }
  
  
  
  1.20  +3 -3  modperl-2.0/src/modules/perl/modperl_callback.h
  
  Index: modperl_callback.h
  ===
  RCS file: 

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

2001-11-14 Thread dougm

dougm   01/11/14 17:30:46

  Modified:src/modules/perl mod_perl.c
  Log:
  save globals before populating %ENV vars
  
  Revision  ChangesPath
  1.94  +2 -2  modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.93
  retrieving revision 1.94
  diff -u -r1.93 -r1.94
  --- mod_perl.c2001/11/01 23:50:32 1.93
  +++ mod_perl.c2001/11/15 01:30:45 1.94
  @@ -524,6 +524,8 @@
   }
   #endif
   
  +modperl_perl_global_request_save(aTHX_ r);
  +
   /* default is +SetupEnv, skip if PerlOption -SetupEnv */
   if (MpDirSETUP_ENV(dcfg) || !MpDirSeenSETUP_ENV(dcfg)) {
   modperl_env_request_populate(aTHX_ r);
  @@ -532,8 +534,6 @@
   if (MpDirPARSE_HEADERS(dcfg)) {
   rcfg-wbucket.header_parse = 1;
   }
  -
  -modperl_perl_global_request_save(aTHX_ r);
   
   h_stdout = modperl_io_tie_stdout(aTHX_ r);
   h_stdin  = modperl_io_tie_stdin(aTHX_ r);
  
  
  



cvs commit: modperl-2.0/src/modules/perl mod_perl.c modperl_interp.c modperl_perl.c modperl_perl.h

2001-11-01 Thread dougm

dougm   01/11/01 15:50:32

  Modified:src/modules/perl mod_perl.c modperl_interp.c modperl_perl.c
modperl_perl.h
  Log:
  moving perl_destruct() and releated items into modperl_perl_destruct() wrapper
  
  Revision  ChangesPath
  1.93  +1 -3  modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.92
  retrieving revision 1.93
  diff -u -r1.92 -r1.93
  --- mod_perl.c2001/10/13 19:11:32 1.92
  +++ mod_perl.c2001/11/01 23:50:32 1.93
  @@ -9,12 +9,10 @@
   
   handles = modperl_xs_dl_handles_get(aTHX_ cdata-pool);
   
  -PL_perl_destruct_level = 2;
   MP_TRACE_i(MP_FUNC, destroying interpreter=0x%lx\n,
  (unsigned long)perl);
   
  -perl_destruct(perl);
  -perl_free(perl);
  +modperl_perl_destruct(perl);
   
   if (handles) {
   modperl_xs_dl_handles_close(cdata-pool, handles);
  
  
  
  1.37  +1 -12 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.36
  retrieving revision 1.37
  diff -u -r1.36 -r1.37
  --- modperl_interp.c  2001/10/21 22:10:11 1.36
  +++ modperl_interp.c  2001/11/01 23:50:32 1.37
  @@ -83,9 +83,6 @@
   MP_TRACE_i(MP_FUNC, *error - still in use!*\n);
   }
   
  -PERL_SET_CONTEXT(interp-perl);
  -PL_perl_destruct_level = 2;
  -
   /* we cant use interp-mip-ap_pool without locking
* apr_pool_create() will mutex lock for us
* XXX: could roll something without using apr_pool_t
  @@ -93,16 +90,8 @@
*/
   (void)apr_pool_create(p, NULL);
   handles = modperl_xs_dl_handles_get(aTHX_ p);
  -
  -perl_destruct(interp-perl);
   
  -/* XXX: big bug in 5.6.1 fixed in 5.7.2+
  - * XXX: see CLONEf_CLONE_HOST perl_clone() flag
  - * XXX: try to find a workaround for 5.6.1
  - */
  -#ifndef WIN32
  -perl_free(interp-perl);
  -#endif
  +modperl_perl_destruct(interp-perl);
   
   if (handles) {
   modperl_xs_dl_handles_close(p, handles);
  
  
  
  1.7   +19 -0 modperl-2.0/src/modules/perl/modperl_perl.c
  
  Index: modperl_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_perl.c,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- modperl_perl.c2001/10/21 05:46:47 1.6
  +++ modperl_perl.c2001/11/01 23:50:32 1.7
  @@ -82,3 +82,22 @@
   modperl_perl_init_ids(aTHX_ ids);
   #endif
   }
  +
  +void modperl_perl_destruct(PerlInterpreter *perl)
  +{
  +dTHXa(perl);
  +
  +PERL_SET_CONTEXT(perl);
  +
  +PL_perl_destruct_level = 2;
  +
  +perl_destruct(perl);
  +
  +/* XXX: big bug in 5.6.1 fixed in 5.7.2+
  + * XXX: see CLONEf_CLONE_HOST perl_clone() flag
  + * XXX: try to find a workaround for 5.6.1
  + */
  +#ifndef WIN32
  +perl_free(perl);
  +#endif
  +}
  
  
  
  1.7   +2 -0  modperl-2.0/src/modules/perl/modperl_perl.h
  
  Index: modperl_perl.h
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_perl.h,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- modperl_perl.h2001/10/21 05:46:47 1.6
  +++ modperl_perl.h2001/11/01 23:50:32 1.7
  @@ -11,4 +11,6 @@
   
   void modperl_perl_init_ids_server(server_rec *s);
   
  +void modperl_perl_destruct(PerlInterpreter *perl);
  +
   #endif /* MODPERL_PERL_H */
  
  
  



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

2001-10-13 Thread dougm

dougm   01/10/13 12:02:03

  Modified:src/modules/perl mod_perl.c modperl_perl_global.c
modperl_perl_global.h
  Log:
  calculate hash of MP_modglobal_keys keys at startup
  
  Revision  ChangesPath
  1.91  +1 -0  modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.90
  retrieving revision 1.91
  diff -u -r1.90 -r1.91
  --- mod_perl.c2001/10/11 04:47:30 1.90
  +++ mod_perl.c2001/10/13 19:02:03 1.91
  @@ -332,6 +332,7 @@
   ap_add_version_component(pconf,
Perl_form(aTHX_ Perl/v%vd, PL_patchlevel));
   modperl_mgv_hash_handlers(pconf, s);
  +modperl_modglobal_hash_keys();
   #ifdef USE_ITHREADS
   modperl_init_clones(s, pconf);
   #endif
  
  
  
  1.11  +10 -0 modperl-2.0/src/modules/perl/modperl_perl_global.c
  
  Index: modperl_perl_global.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_perl_global.c,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- modperl_perl_global.c 2001/10/13 18:55:03 1.10
  +++ modperl_perl_global.c 2001/10/13 19:02:03 1.11
  @@ -26,6 +26,16 @@
   { NULL },
   };
   
  +void modperl_modglobal_hash_keys(void)
  +{
  +modperl_modglobal_key_t *gkey = MP_modglobal_keys;
  +
  +while (gkey-name) {
  +PERL_HASH(gkey-hash, gkey-val, gkey-len);
  +gkey++;
  +}
  +}
  +
   modperl_modglobal_key_t *modperl_modglobal_lookup(pTHX_ const char *name)
   {
   int i;
  
  
  
  1.9   +2 -0  modperl-2.0/src/modules/perl/modperl_perl_global.h
  
  Index: modperl_perl_global.h
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_perl_global.h,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- modperl_perl_global.h 2001/10/13 18:55:03 1.8
  +++ modperl_perl_global.h 2001/10/13 19:02:03 1.9
  @@ -49,6 +49,8 @@
   modperl_perl_global_svpv_t rs;
   } modperl_perl_globals_t;
   
  +void modperl_modglobal_hash_keys(void);
  +
   modperl_modglobal_key_t *modperl_modglobal_lookup(pTHX_ const char *name);
   
   void modperl_perl_global_request_save(pTHX_ request_rec *r);
  
  
  



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

2001-10-10 Thread dougm

dougm   01/10/08 17:13:00

  Modified:src/modules/perl mod_perl.c modperl_perl.c modperl_perl.h
  Log:
  *CORE::GLOBAL::exit = \ModPerl::Util::exit
  
  Revision  ChangesPath
  1.88  +2 -0  modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.87
  retrieving revision 1.88
  diff -u -r1.87 -r1.88
  --- mod_perl.c2001/10/07 19:04:20 1.87
  +++ mod_perl.c2001/10/09 00:13:00 1.88
  @@ -39,6 +39,8 @@
   
   modperl_env_default_populate(aTHX);
   
  +modperl_perl_core_global_init(aTHX);
  +
   for (i=0; MP_xs_loaders[i]; i++) {
   char *name = Perl_form(aTHX_ MP_xs_loader_name, MP_xs_loaders[i]);
   newCONSTSUB(PL_defstash, name, newSViv(1));
  
  
  
  1.5   +26 -0 modperl-2.0/src/modules/perl/modperl_perl.c
  
  Index: modperl_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_perl.c,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- modperl_perl.c2001/09/16 17:28:43 1.4
  +++ modperl_perl.c2001/10/09 00:13:00 1.5
  @@ -4,6 +4,32 @@
* others (larger tweaks) are in their own modules, e.g. modperl_env.c
*/
   
  +typedef struct {
  +const char *name;
  +const char *sub_name;
  +const char *core_name;
  +} modperl_perl_core_global_t;
  +
  +#define MP_PERL_CORE_GLOBAL_ENT(name) \
  +{ name, ModPerl::Util:: name, CORE::GLOBAL:: name }
  +
  +static modperl_perl_core_global_t MP_perl_core_global_entries[] = {
  +MP_PERL_CORE_GLOBAL_ENT(exit),
  +{ NULL },
  +};
  +
  +void modperl_perl_core_global_init(pTHX)
  +{
  +modperl_perl_core_global_t *cglobals = MP_perl_core_global_entries;
  +
  +while (cglobals-name) {
  +GV *gv = gv_fetchpv(cglobals-core_name, TRUE, SVt_PVCV);
  +GvCV(gv) = get_cv(cglobals-sub_name, TRUE);
  +GvIMPORTED_CV_on(gv);
  +cglobals++;
  +}
  +}
  +
   void modperl_perl_ids_get(modperl_perl_ids_t *ids)
   {
   ids-pid  = (I32)getpid();
  
  
  
  1.5   +2 -0  modperl-2.0/src/modules/perl/modperl_perl.h
  
  Index: modperl_perl.h
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_perl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- modperl_perl.h2001/09/16 17:28:43 1.4
  +++ modperl_perl.h2001/10/09 00:13:00 1.5
  @@ -7,6 +7,8 @@
   Gid_t gid, egid;
   } modperl_perl_ids_t;
   
  +void modperl_perl_core_global_init(pTHX);
  +
   void modperl_perl_ids_get(modperl_perl_ids_t *ids);
   
   void modperl_perl_init_ids(pTHX_ modperl_perl_ids_t *ids);
  
  
  



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

2001-10-07 Thread dougm

dougm   01/10/07 12:04:20

  Modified:src/modules/perl mod_perl.c modperl_perl_global.c
modperl_perl_global.h
  Log:
  add modperl_perl_global_request_{restore,save} functions for future use of 
request_rec to manage globals
  
  Revision  ChangesPath
  1.87  +2 -2  modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.86
  retrieving revision 1.87
  diff -u -r1.86 -r1.87
  --- mod_perl.c2001/10/06 19:43:40 1.86
  +++ mod_perl.c2001/10/07 19:04:20 1.87
  @@ -529,7 +529,7 @@
   rcfg-wbucket.header_parse = 1;
   }
   
  -modperl_perl_global_save(aTHX_ rcfg-perl_globals);
  +modperl_perl_global_request_save(aTHX_ r);
   
   h_stdout = modperl_io_tie_stdout(aTHX_ r);
   h_stdin  = modperl_io_tie_stdin(aTHX_ r);
  @@ -550,7 +550,7 @@
   modperl_env_request_untie(aTHX_ r);
   #endif
   
  -modperl_perl_global_restore(aTHX_ rcfg-perl_globals);
  +modperl_perl_global_request_restore(aTHX_ r);
   
   #ifdef USE_ITHREADS
   if (MpInterpPUTBACK(interp)) {
  
  
  
  1.5   +14 -2 modperl-2.0/src/modules/perl/modperl_perl_global.c
  
  Index: modperl_perl_global.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_perl_global.c,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- modperl_perl_global.c 2001/10/06 23:27:47 1.4
  +++ modperl_perl_global.c 2001/10/07 19:04:20 1.5
  @@ -128,7 +128,7 @@
   apr_uint64_t **ptr = (apr_uint64_t **) \
   ((char *)globals + (int)(long)modperl_perl_global_entries[i].offset)
   
  -void modperl_perl_global_save(pTHX_ modperl_perl_globals_t *globals)
  +static void modperl_perl_global_save(pTHX_ modperl_perl_globals_t *globals)
   {
   int i;
   
  @@ -154,7 +154,7 @@
   }
   }
   
  -void modperl_perl_global_restore(pTHX_ modperl_perl_globals_t *globals)
  +static void modperl_perl_global_restore(pTHX_ modperl_perl_globals_t *globals)
   {
   int i;
   
  @@ -176,4 +176,16 @@
   break;
   }
   }
  +}
  +
  +void modperl_perl_global_request_save(pTHX_ request_rec *r)
  +{
  +MP_dRCFG;
  +modperl_perl_global_save(aTHX_ rcfg-perl_globals);
  +}
  +
  +void modperl_perl_global_request_restore(pTHX_ request_rec *r)
  +{
  +MP_dRCFG;
  +modperl_perl_global_restore(aTHX_ rcfg-perl_globals);
   }
  
  
  
  1.4   +2 -2  modperl-2.0/src/modules/perl/modperl_perl_global.h
  
  Index: modperl_perl_global.h
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_perl_global.h,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- modperl_perl_global.h 2001/09/28 19:53:22 1.3
  +++ modperl_perl_global.h 2001/10/07 19:04:20 1.4
  @@ -31,8 +31,8 @@
   modperl_perl_global_svpv_t rs;
   } modperl_perl_globals_t;
   
  -void modperl_perl_global_save(pTHX_ modperl_perl_globals_t *globals);
  +void modperl_perl_global_request_save(pTHX_ request_rec *r);
   
  -void modperl_perl_global_restore(pTHX_ modperl_perl_globals_t *globals);
  +void modperl_perl_global_request_restore(pTHX_ request_rec *r);
   
   #endif
  
  
  



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

2001-10-06 Thread dougm

dougm   01/10/06 12:43:40

  Modified:src/modules/perl mod_perl.c modperl_cmd.c modperl_cmd.h
  Log:
  implement PerlInitHandler
  
  Revision  ChangesPath
  1.86  +1 -0  modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.85
  retrieving revision 1.86
  diff -u -r1.85 -r1.86
  --- mod_perl.c2001/09/28 19:51:40 1.85
  +++ mod_perl.c2001/10/06 19:43:40 1.86
  @@ -415,6 +415,7 @@
   MP_CMD_SRV_ITERATE(PerlModule, modules, PerlModule),
   MP_CMD_SRV_ITERATE(PerlRequire, requires, PerlRequire),
   MP_CMD_DIR_ITERATE(PerlOptions, options, Perl Options),
  +MP_CMD_DIR_ITERATE(PerlInitHandler, init_handlers, Subroutine name),
   MP_CMD_DIR_TAKE2(PerlSetVar, set_var, PerlSetVar),
   MP_CMD_DIR_ITERATE2(PerlAddVar, add_var, PerlAddVar),
   #ifdef MP_TRACE
  
  
  
  1.13  +8 -0  modperl-2.0/src/modules/perl/modperl_cmd.c
  
  Index: modperl_cmd.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_cmd.c,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- modperl_cmd.c 2001/09/28 19:51:40 1.12
  +++ modperl_cmd.c 2001/10/06 19:43:40 1.13
  @@ -116,6 +116,14 @@
   return NULL;
   }
   
  +MP_CMD_SRV_DECLARE(init_handlers)
  +{
  +if (parms-path) {
  +return modperl_cmd_header_parser_handlers(parms, mconfig, arg);
  +}
  +
  +return modperl_cmd_post_read_request_handlers(parms, mconfig, arg);
  +}
   
   #ifdef MP_COMPAT_1X
   
  
  
  
  1.15  +1 -0  modperl-2.0/src/modules/perl/modperl_cmd.h
  
  Index: modperl_cmd.h
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_cmd.h,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- modperl_cmd.h 2001/09/28 19:51:40 1.14
  +++ modperl_cmd.h 2001/10/06 19:43:40 1.15
  @@ -23,6 +23,7 @@
   MP_CMD_SRV_DECLARE2(set_var);
   MP_CMD_SRV_DECLARE2(add_var);
   MP_CMD_SRV_DECLARE(options);
  +MP_CMD_SRV_DECLARE(init_handlers);
   
   #ifdef MP_COMPAT_1X
   
  
  
  



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

2001-09-28 Thread dougm

dougm   01/09/28 12:01:50

  Modified:src/modules/perl mod_perl.c
  Log:
  PL_destruct_level should always be 2
  
  Revision  ChangesPath
  1.83  +6 -6  modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.82
  retrieving revision 1.83
  diff -u -r1.82 -r1.83
  --- mod_perl.c2001/09/28 18:34:30 1.82
  +++ mod_perl.c2001/09/28 19:01:50 1.83
  @@ -58,6 +58,7 @@
   
   PerlInterpreter *modperl_startup(server_rec *s, apr_pool_t *p)
   {
  +dTHXa(NULL);
   MP_dSCFG(s);
   PerlInterpreter *perl;
   int status;
  @@ -81,13 +82,12 @@
   exit(1);
   }
   
  +aTHX = perl;
  +
   perl_construct(perl);
  -#ifdef MP_DEBUG
  -{
  -dTHXa(perl);
  -PL_perl_destruct_level = 2;
  -}
  -#endif
  +
  +PL_perl_destruct_level = 2;
  +
   status = perl_parse(perl, modperl_xs_init, argc, argv, NULL);
   
   if (status) {
  
  
  



cvs commit: modperl-2.0/src/modules/perl mod_perl.c modperl_cmd.c modperl_cmd.h modperl_config.c modperl_types.h

2001-09-28 Thread stas

stas01/09/28 12:51:40

  Modified:src/modules/perl mod_perl.c modperl_cmd.c modperl_cmd.h
modperl_config.c modperl_types.h
  Log:
  - implementation of PerlSetVar and PerlAddVar
  
  Revision  ChangesPath
  1.85  +3 -1  modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.84
  retrieving revision 1.85
  diff -u -r1.84 -r1.85
  --- mod_perl.c2001/09/28 19:33:58 1.84
  +++ mod_perl.c2001/09/28 19:51:40 1.85
  @@ -173,7 +173,7 @@
   if (!modperl_config_apply_PerlRequire(s, scfg, perl, p)) {
   exit(1);
   }
  -
  +
   #ifdef USE_ITHREADS
   
   if (!MpSrvENABLE(scfg)) {
  @@ -415,6 +415,8 @@
   MP_CMD_SRV_ITERATE(PerlModule, modules, PerlModule),
   MP_CMD_SRV_ITERATE(PerlRequire, requires, PerlRequire),
   MP_CMD_DIR_ITERATE(PerlOptions, options, Perl Options),
  +MP_CMD_DIR_TAKE2(PerlSetVar, set_var, PerlSetVar),
  +MP_CMD_DIR_ITERATE2(PerlAddVar, add_var, PerlAddVar),
   #ifdef MP_TRACE
   MP_CMD_SRV_TAKE1(PerlTrace, trace, Trace level),
   #endif
  
  
  
  1.12  +32 -0 modperl-2.0/src/modules/perl/modperl_cmd.c
  
  Index: modperl_cmd.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_cmd.c,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- modperl_cmd.c 2001/09/27 19:41:44 1.11
  +++ modperl_cmd.c 2001/09/28 19:51:40 1.12
  @@ -60,6 +60,38 @@
   return NULL;
   }
   
  +MP_CMD_SRV_DECLARE2(set_var)
  +{
  +MP_dSCFG(parms-server);
  +modperl_config_dir_t *dcfg = (modperl_config_dir_t *)mconfig;
  + 
  +if (parms-path) {
  +apr_table_set(dcfg-SetVar, arg1, arg2);
  +MP_TRACE_d(MP_FUNC, DIR: arg1 = %s, arg2 = %s\n, arg1, arg2);
  +}
  +else {
  +apr_table_set(scfg-SetVar, arg1, arg2);
  +MP_TRACE_d(MP_FUNC, SRV: arg1 = %s, arg2 = %s\n, arg1, arg2);
  +}
  +return NULL;
  +}
  +
  +MP_CMD_SRV_DECLARE2(add_var)
  +{
  +MP_dSCFG(parms-server);
  +modperl_config_dir_t *dcfg = (modperl_config_dir_t *)mconfig;
  + 
  +if (parms-path) {
  +apr_table_add(dcfg-SetVar, arg1, arg2);
  +MP_TRACE_d(MP_FUNC, DIR: arg1 = %s, arg2 = %s\n, arg1, arg2);
  +}
  +else {
  +apr_table_add(scfg-SetVar, arg1, arg2);
  +MP_TRACE_d(MP_FUNC, SRV: arg1 = %s, arg2 = %s\n, arg1, arg2);
  +}
  +return NULL;
  +}
  +
   MP_CMD_SRV_DECLARE(options)
   {
   MP_dSCFG(parms-server);
  
  
  
  1.14  +14 -5 modperl-2.0/src/modules/perl/modperl_cmd.h
  
  Index: modperl_cmd.h
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_cmd.h,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- modperl_cmd.h 2001/09/27 19:41:44 1.13
  +++ modperl_cmd.h 2001/09/28 19:51:40 1.14
  @@ -4,14 +4,13 @@
   char *modperl_cmd_push_handlers(MpAV **handlers, const char *name,
   apr_pool_t *p);
   
  -
   #define MP_CMD_SRV_DECLARE(item) \
  -const char *modperl_cmd_##item(cmd_parms *parms, \
  -   void *mconfig, const char *arg)
  +const char *modperl_cmd_##item(cmd_parms *parms, void *mconfig, \
  +   const char *arg)
   
   #define MP_CMD_SRV_DECLARE2(item) \
  -const char *modperl_cmd_##item(cmd_parms *parms, \
  -   void *mconfig, const char *arg1, const char *arg2)
  +const char *modperl_cmd_##item(cmd_parms *parms, void *mconfig, \
  +   const char *arg1, const char *arg2)
   
   #define MP_CMD_SRV_DECLARE_FLAG(item) \
   const char *modperl_cmd_##item(cmd_parms *parms, \
  @@ -21,6 +20,8 @@
   MP_CMD_SRV_DECLARE(switches);
   MP_CMD_SRV_DECLARE(modules);
   MP_CMD_SRV_DECLARE(requires);
  +MP_CMD_SRV_DECLARE2(set_var);
  +MP_CMD_SRV_DECLARE2(add_var);
   MP_CMD_SRV_DECLARE(options);
   
   #ifdef MP_COMPAT_1X
  @@ -73,6 +74,10 @@
  AP_INIT_ITERATE( name, modperl_cmd_##item, NULL, \
 RSRC_CONF, desc )
   
  +#define MP_CMD_SRV_ITERATE2(name, item, desc) \
  +   AP_INIT_ITERATE2( name, modperl_cmd_##item, NULL, \
  +  RSRC_CONF, desc )
  +
   #define MP_CMD_DIR_TAKE1(name, item, desc) \
   AP_INIT_TAKE1( name, modperl_cmd_##item, NULL, \
 OR_ALL, desc )
  @@ -83,6 +88,10 @@
   
   #define MP_CMD_DIR_ITERATE(name, item, desc) \
   AP_INIT_ITERATE( name, modperl_cmd_##item, NULL, \
  +  OR_ALL, desc )
  +
  +#define MP_CMD_DIR_ITERATE2(name, item, desc) \
  +AP_INIT_ITERATE2( name, modperl_cmd_##item, NULL, \
 OR_ALL, desc )
   
   #define MP_CMD_DIR_FLAG(name, item, desc) \

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

2001-09-27 Thread dougm

dougm   01/09/27 08:46:21

  Modified:src/modules/perl mod_perl.c modperl_cmd.c modperl_cmd.h
  Log:
  add PerlTaintCheck directive for backwards compat
  
  Revision  ChangesPath
  1.73  +2 -0  modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.72
  retrieving revision 1.73
  diff -u -r1.72 -r1.73
  --- mod_perl.c2001/09/27 15:26:36 1.72
  +++ mod_perl.c2001/09/27 15:46:21 1.73
  @@ -428,6 +428,8 @@
   #ifdef MP_COMPAT_1X
   MP_CMD_DIR_ITERATE(PerlHandler, response_handlers,
  Subroutine name),
  +MP_CMD_SRV_FLAG(PerlTaintCheck, taint_check,
  +Turn on -T switch),
   #endif
   MP_CMD_ENTRIES,
   { NULL }, 
  
  
  
  1.7   +14 -0 modperl-2.0/src/modules/perl/modperl_cmd.c
  
  Index: modperl_cmd.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_cmd.c,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- modperl_cmd.c 2001/08/08 16:20:31 1.6
  +++ modperl_cmd.c 2001/09/27 15:46:21 1.7
  @@ -84,6 +84,20 @@
   return NULL;
   }
   
  +
  +#ifdef MP_COMPAT_1X
  +
  +MP_CMD_SRV_DECLARE_FLAG(taint_check)
  +{
  +if (on) {
  +return modperl_cmd_switches(parms, dummy, -T);
  +}
  +
  +return NULL;
  +}
  +
  +#endif /* MP_COMPAT_1X */
  +
   #ifdef USE_ITHREADS
   
   #define MP_INTERP_SCOPE_USAGE PerlInterpScope must be one of 
  
  
  
  1.9   +6 -0  modperl-2.0/src/modules/perl/modperl_cmd.h
  
  Index: modperl_cmd.h
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_cmd.h,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- modperl_cmd.h 2001/09/27 15:39:57 1.8
  +++ modperl_cmd.h 2001/09/27 15:46:21 1.9
  @@ -23,6 +23,12 @@
   MP_CMD_SRV_DECLARE(requires);
   MP_CMD_SRV_DECLARE(options);
   
  +#ifdef MP_COMPAT_1X
  +
  +MP_CMD_SRV_DECLARE_FLAG(taint_check);
  +
  +#endif /* MP_COMPAT_1X */
  +
   #ifdef USE_ITHREADS
   MP_CMD_SRV_DECLARE(interp_start);
   MP_CMD_SRV_DECLARE(interp_max);
  
  
  



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

2001-09-27 Thread dougm

dougm   01/09/27 12:04:39

  Modified:lib/ModPerl Code.pm
   src/modules/perl mod_perl.c mod_perl.h modperl_types.h
  Log:
  integrate modperl_perl_global module
  
  Revision  ChangesPath
  1.69  +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.68
  retrieving revision 1.69
  diff -u -r1.68 -r1.69
  --- Code.pm   2001/09/20 06:07:48 1.68
  +++ Code.pm   2001/09/27 19:04:38 1.69
  @@ -525,7 +525,7 @@
   
   my @c_src_names = qw(interp tipool log config cmd options callback handler
gtop util io filter bucket mgv pcw global env cgi
  - perl);
  + perl perl_global);
   my @g_c_names = map { modperl_$_ } qw(hooks directives flags xsinit);
   my @c_names   = ('mod_perl', (map modperl_$_, @c_src_names));
   sub c_files { [map { $_.c } @c_names, @g_c_names] }
  
  
  
  1.75  +4 -0  modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.74
  retrieving revision 1.75
  diff -u -r1.74 -r1.75
  --- mod_perl.c2001/09/27 15:56:44 1.74
  +++ mod_perl.c2001/09/27 19:04:38 1.75
  @@ -510,6 +510,8 @@
   rcfg-wbucket.header_parse = 1;
   }
   
  +modperl_perl_global_save(aTHX_ rcfg-perl_globals);
  +
   h_stdout = modperl_io_tie_stdout(aTHX_ r);
   h_stdin  = modperl_io_tie_stdin(aTHX_ r);
   
  @@ -520,6 +522,8 @@
   modperl_io_handle_untie(aTHX_ h_stdin);
   
   modperl_env_request_untie(aTHX_ r);
  +
  +modperl_perl_global_restore(aTHX_ rcfg-perl_globals);
   
   #ifdef USE_ITHREADS
   if (MpInterpPUTBACK(interp)) {
  
  
  
  1.38  +1 -0  modperl-2.0/src/modules/perl/mod_perl.h
  
  Index: mod_perl.h
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.h,v
  retrieving revision 1.37
  retrieving revision 1.38
  diff -u -r1.37 -r1.38
  --- mod_perl.h2001/09/27 15:26:36 1.37
  +++ mod_perl.h2001/09/27 19:04:38 1.38
  @@ -12,6 +12,7 @@
   
   #include modperl_flags.h
   #include modperl_hooks.h
  +#include modperl_perl_global.h
   
   #ifdef MP_USE_GTOP
   #include modperl_gtop.h
  
  
  
  1.47  +1 -0  modperl-2.0/src/modules/perl/modperl_types.h
  
  Index: modperl_types.h
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_types.h,v
  retrieving revision 1.46
  retrieving revision 1.47
  diff -u -r1.46 -r1.47
  --- modperl_types.h   2001/08/30 05:15:51 1.46
  +++ modperl_types.h   2001/09/27 19:04:38 1.47
  @@ -205,6 +205,7 @@
   modperl_wbucket_t wbucket;
   MpAV *handlers_per_dir[MP_HANDLER_NUM_PER_DIR];
   MpAV *handlers_per_srv[MP_HANDLER_NUM_PER_SRV];
  +modperl_perl_globals_t perl_globals;
   #ifdef USE_ITHREADS
   modperl_interp_t *interp;
   #endif
  
  
  



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

2001-09-27 Thread dougm

dougm   01/09/27 12:35:34

  Modified:src/modules/perl mod_perl.c modperl_cmd.c modperl_cmd.h
  Log:
  add PerlSendHeader directive for backwards compat
  
  Revision  ChangesPath
  1.76  +2 -0  modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.75
  retrieving revision 1.76
  diff -u -r1.75 -r1.76
  --- mod_perl.c2001/09/27 19:04:38 1.75
  +++ mod_perl.c2001/09/27 19:35:34 1.76
  @@ -426,6 +426,8 @@
Scope of a Perl interpreter),
   #endif
   #ifdef MP_COMPAT_1X
  +MP_CMD_DIR_FLAG(PerlSendHeader, send_header,
  +Tell mod_perl to scan output for HTTP headers),
   MP_CMD_DIR_ITERATE(PerlHandler, response_handlers,
  Subroutine name),
   MP_CMD_SRV_FLAG(PerlTaintCheck, taint_check,
  
  
  
  1.10  +6 -0  modperl-2.0/src/modules/perl/modperl_cmd.c
  
  Index: modperl_cmd.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_cmd.c,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- modperl_cmd.c 2001/09/27 15:56:44 1.9
  +++ modperl_cmd.c 2001/09/27 19:35:34 1.10
  @@ -105,6 +105,12 @@
   return NULL;
   }
   
  +MP_CMD_SRV_DECLARE_FLAG(send_header)
  +{
  +char *arg = flag_on ? +ParseHeaders : -ParseHeaders;
  +return modperl_cmd_options(parms, mconfig, arg);
  +}
  +
   #endif /* MP_COMPAT_1X */
   
   #ifdef USE_ITHREADS
  
  
  
  1.12  +1 -0  modperl-2.0/src/modules/perl/modperl_cmd.h
  
  Index: modperl_cmd.h
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_cmd.h,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- modperl_cmd.h 2001/09/27 15:56:44 1.11
  +++ modperl_cmd.h 2001/09/27 19:35:34 1.12
  @@ -27,6 +27,7 @@
   
   MP_CMD_SRV_DECLARE_FLAG(taint_check);
   MP_CMD_SRV_DECLARE_FLAG(warn);
  +MP_CMD_SRV_DECLARE_FLAG(send_header);
   
   #endif /* MP_COMPAT_1X */
   
  
  
  



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

2001-09-17 Thread dougm

dougm   01/09/17 16:36:36

  Modified:lib/ModPerl Code.pm
   src/modules/perl mod_perl.c modperl_callback.c
modperl_config.c
  Log:
  s/Enabled/Enable/g for the PerlOption
  
  Revision  ChangesPath
  1.67  +2 -2  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.66
  retrieving revision 1.67
  diff -u -r1.66 -r1.67
  --- Code.pm   2001/09/15 22:25:55 1.66
  +++ Code.pm   2001/09/17 23:36:35 1.67
  @@ -91,7 +91,7 @@
   my @hook_flags = (map { canon_uc($_) } keys %hooks);
   my @ithread_opts = qw(CLONE PARENT);
   my %flags = (
  -Srv = ['NONE', @ithread_opts, qw(ENABLED AUTOLOAD MERGE_HANDLERS),
  +Srv = ['NONE', @ithread_opts, qw(ENABLE AUTOLOAD MERGE_HANDLERS),
   @hook_flags, 'UNSET'],
   Dir = [qw(NONE PARSE_HEADERS SETUP_ENV MERGE_HANDLERS GLOBAL_REQUEST UNSET)],
   Req = [qw(NONE SET_GLOBAL_REQUEST)],
  @@ -293,7 +293,7 @@
   $protostr
   {
   $prototype-{cfg}-{get};
  -if (!MpSrvENABLED(scfg)) {
  +if (!MpSrvENABLE(scfg)) {
   return apr_pstrcat(parms-pool,
  Perl is disabled for server ,
  parms-server-server_hostname, NULL);
  
  
  
  1.71  +2 -2  modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.70
  retrieving revision 1.71
  diff -u -r1.70 -r1.71
  --- mod_perl.c2001/09/16 01:05:44 1.70
  +++ mod_perl.c2001/09/17 23:36:35 1.71
  @@ -135,7 +135,7 @@
   }
   #endif
   
  -if (!MpSrvENABLED(base_scfg)) {
  +if (!MpSrvENABLE(base_scfg)) {
   /* how silly */
   return;
   }
  @@ -170,7 +170,7 @@
   
   #ifdef USE_ITHREADS
   
  -if (!MpSrvENABLED(scfg)) {
  +if (!MpSrvENABLE(scfg)) {
   scfg-mip = NULL;
   continue;
   }
  
  
  
  1.43  +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.42
  retrieving revision 1.43
  diff -u -r1.42 -r1.43
  --- modperl_callback.c2001/05/22 22:13:20 1.42
  +++ modperl_callback.c2001/09/17 23:36:36 1.43
  @@ -96,7 +96,7 @@
   const char *desc = NULL;
   AV *av_args = Nullav;
   
  -if (!MpSrvENABLED(scfg)) {
  +if (!MpSrvENABLE(scfg)) {
   MP_TRACE_h(MP_FUNC, PerlOff for server %s\n,
  s-server_hostname);
   return DECLINED;
  
  
  
  1.37  +1 -1  modperl-2.0/src/modules/perl/modperl_config.c
  
  Index: modperl_config.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_config.c,v
  retrieving revision 1.36
  retrieving revision 1.37
  diff -u -r1.36 -r1.37
  --- modperl_config.c  2001/09/15 20:17:35 1.36
  +++ modperl_config.c  2001/09/17 23:36:36 1.37
  @@ -68,7 +68,7 @@
   apr_pcalloc(p, sizeof(*scfg));
   
   scfg-flags = modperl_options_new(p, MpSrvType);
  -MpSrvENABLED_On(scfg); /* mod_perl enabled by default */
  +MpSrvENABLE_On(scfg); /* mod_perl enabled by default */
   MpSrvHOOKS_ALL_On(scfg); /* all hooks enabled by default */
   
   scfg-PerlModule  = apr_array_make(p, 2, sizeof(char *));
  
  
  



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

2001-09-15 Thread dougm

dougm   01/09/15 15:26:57

  Modified:src/modules/perl mod_perl.c mod_perl.h
  Log:
  add modperl_hook_child_init
  call modperl_perl_init_ids from modperl_hook_child_init
  
  Revision  ChangesPath
  1.68  +12 -0 modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.67
  retrieving revision 1.68
  diff -u -r1.67 -r1.68
  --- mod_perl.c2001/09/13 03:18:27 1.67
  +++ mod_perl.c2001/09/15 22:26:57 1.68
  @@ -352,6 +352,15 @@
   return OK;
   }
   
  +static void modperl_hook_child_init(apr_pool_t *p, server_rec *s)
  +{
  +#ifdef USE_ITHREADS
  +/*XXX*/
  +#else
  +modperl_perl_init_ids(aTHX);
  +#endif
  +}
  +
   void modperl_register_hooks(apr_pool_t *p)
   {
   ap_hook_open_logs(modperl_hook_init,
  @@ -391,6 +400,9 @@
   
   ap_hook_header_parser(modperl_hook_header_parser,
 NULL, NULL, APR_HOOK_FIRST);
  +
  +ap_hook_child_init(modperl_hook_child_init,
  +   NULL, NULL, APR_HOOK_MIDDLE);
   
   modperl_register_handler_hooks();
   }
  
  
  
  1.36  +1 -0  modperl-2.0/src/modules/perl/mod_perl.h
  
  Index: mod_perl.h
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.h,v
  retrieving revision 1.35
  retrieving revision 1.36
  diff -u -r1.35 -r1.36
  --- mod_perl.h2001/08/19 17:22:55 1.35
  +++ mod_perl.h2001/09/15 22:26:57 1.36
  @@ -34,6 +34,7 @@
   #include modperl_global.h
   #include modperl_env.h
   #include modperl_cgi.h
  +#include modperl_perl.h
   
   void modperl_init(server_rec *s, apr_pool_t *p);
   void modperl_hook_init(apr_pool_t *pconf, apr_pool_t *plog, 
  
  
  



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

2001-09-15 Thread dougm

dougm   01/09/15 17:56:15

  Modified:src/modules/perl mod_perl.c modperl_perl.c modperl_perl.h
  Log:
  init ids for ithread Perls
  
  Revision  ChangesPath
  1.69  +6 -2  modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.68
  retrieving revision 1.69
  diff -u -r1.68 -r1.69
  --- mod_perl.c2001/09/15 22:26:57 1.68
  +++ mod_perl.c2001/09/16 00:56:15 1.69
  @@ -354,10 +354,14 @@
   
   static void modperl_hook_child_init(apr_pool_t *p, server_rec *s)
   {
  +modperl_perl_ids_t ids;
  +modperl_perl_ids_get(ids);
   #ifdef USE_ITHREADS
  -/*XXX*/
  + modperl_interp_mip_walk_servers(NULL, s,
  + modperl_perl_init_ids_mip,
  +(void*)ids);
   #else
  -modperl_perl_init_ids(aTHX);
  +modperl_perl_init_ids(aTHX_ ids);
   #endif
   }
   
  
  
  
  1.2   +28 -8 modperl-2.0/src/modules/perl/modperl_perl.c
  
  Index: modperl_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_perl.c,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- modperl_perl.c2001/09/15 22:25:29 1.1
  +++ modperl_perl.c2001/09/16 00:56:15 1.2
  @@ -4,17 +4,37 @@
* others (larger tweaks) are in their own modules, e.g. modperl_env.c
*/
   
  -void modperl_perl_init_ids(pTHX)
  +void modperl_perl_ids_get(modperl_perl_ids_t *ids)
   {
  -sv_setiv(GvSV(gv_fetchpv($, TRUE, SVt_PV)), (I32)getpid());
  -
  +ids-pid  = (I32)getpid();
   #ifndef WIN32
  -PL_uid  = (int)getuid(); 
  -PL_euid = (int)geteuid(); 
  -PL_gid  = (int)getgid(); 
  -PL_egid = (int)getegid(); 
  +ids-uid  = getuid();
  +ids-euid = geteuid(); 
  +ids-gid  = getgid(); 
  +ids-gid  = getegid(); 
  +
   MP_TRACE_g(MP_FUNC, 
  uid=%d, euid=%d, gid=%d, egid=%d\n,
  -   PL_uid, PL_euid, PL_gid, PL_egid);
  +   (int)ids-uid, (int)ids-euid,
  +   (int)ids-gid, (int)ids-egid);
   #endif
  +}
  +
  +void modperl_perl_init_ids(pTHX_ modperl_perl_ids_t *ids)
  +{
  +sv_setiv(GvSV(gv_fetchpv($, TRUE, SVt_PV)), ids-pid);
  +
  +#ifndef WIN32
  +PL_uid  = ids-uid;
  +PL_euid = ids-euid;
  +PL_gid  = ids-gid;
  +PL_egid = ids-egid;
  +#endif
  +}
  +
  +apr_status_t modperl_perl_init_ids_mip(pTHX_ modperl_interp_pool_t *mip,
  +   void *data)
  +{
  +modperl_perl_init_ids(aTHX_ (modperl_perl_ids_t *)data);
  +return APR_SUCCESS;
   }
  
  
  
  1.2   +12 -1 modperl-2.0/src/modules/perl/modperl_perl.h
  
  Index: modperl_perl.h
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_perl.h,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- modperl_perl.h2001/09/15 22:25:29 1.1
  +++ modperl_perl.h2001/09/16 00:56:15 1.2
  @@ -1,6 +1,17 @@
   #ifndef MODPERL_PERL_H
   #define MODPERL_PERL_H
   
  -void modperl_perl_init_ids(pTHX);
  +typedef struct {
  +I32 pid;
  +Uid_t uid, euid;
  +Gid_t gid, egid;
  +} modperl_perl_ids_t;
  +
  +void modperl_perl_ids_get(modperl_perl_ids_t *ids);
  +
  +void modperl_perl_init_ids(pTHX_ modperl_perl_ids_t *ids);
  +
  +apr_status_t modperl_perl_init_ids_mip(pTHX_ modperl_interp_pool_t *mip,
  +   void *data);
   
   #endif /* MODPERL_PERL_H */
  
  
  



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

2001-09-15 Thread dougm

dougm   01/09/15 18:05:44

  Modified:src/modules/perl mod_perl.c modperl_perl.c modperl_perl.h
  Log:
  move code out of modperl_hook_child_init into modperl_perl_init_ids_server
  
  Revision  ChangesPath
  1.70  +1 -9  modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.69
  retrieving revision 1.70
  diff -u -r1.69 -r1.70
  --- mod_perl.c2001/09/16 00:56:15 1.69
  +++ mod_perl.c2001/09/16 01:05:44 1.70
  @@ -354,15 +354,7 @@
   
   static void modperl_hook_child_init(apr_pool_t *p, server_rec *s)
   {
  -modperl_perl_ids_t ids;
  -modperl_perl_ids_get(ids);
  -#ifdef USE_ITHREADS
  - modperl_interp_mip_walk_servers(NULL, s,
  - modperl_perl_init_ids_mip,
  -(void*)ids);
  -#else
  -modperl_perl_init_ids(aTHX_ ids);
  -#endif
  +modperl_perl_init_ids_server(s);
   }
   
   void modperl_register_hooks(apr_pool_t *p)
  
  
  
  1.3   +13 -0 modperl-2.0/src/modules/perl/modperl_perl.c
  
  Index: modperl_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_perl.c,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- modperl_perl.c2001/09/16 00:56:15 1.2
  +++ modperl_perl.c2001/09/16 01:05:44 1.3
  @@ -38,3 +38,16 @@
   modperl_perl_init_ids(aTHX_ (modperl_perl_ids_t *)data);
   return APR_SUCCESS;
   }
  +
  +void modperl_perl_init_ids_server(server_rec *s)
  +{
  +modperl_perl_ids_t ids;
  +modperl_perl_ids_get(ids);
  +#ifdef USE_ITHREADS
  + modperl_interp_mip_walk_servers(NULL, s,
  + modperl_perl_init_ids_mip,
  +(void*)ids);
  +#else
  +modperl_perl_init_ids(aTHX_ ids);
  +#endif
  +}
  
  
  
  1.3   +2 -0  modperl-2.0/src/modules/perl/modperl_perl.h
  
  Index: modperl_perl.h
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_perl.h,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- modperl_perl.h2001/09/16 00:56:15 1.2
  +++ modperl_perl.h2001/09/16 01:05:44 1.3
  @@ -14,4 +14,6 @@
   apr_status_t modperl_perl_init_ids_mip(pTHX_ modperl_interp_pool_t *mip,
  void *data);
   
  +void modperl_perl_init_ids_server(server_rec *s);
  +
   #endif /* MODPERL_PERL_H */
  
  
  



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

2001-09-12 Thread dougm

dougm   01/09/12 19:10:35

  Modified:src/modules/perl mod_perl.c
  Log:
  add a bootstrap note for APR
  
  Revision  ChangesPath
  1.65  +13 -5 modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.64
  retrieving revision 1.65
  diff -u -r1.64 -r1.65
  --- mod_perl.c2001/09/10 04:43:03 1.64
  +++ mod_perl.c2001/09/13 02:10:35 1.65
  @@ -24,13 +24,21 @@
   }
   #endif
   
  -static void my_xs_init(pTHX)
  +static const char *MP_xs_loaders[] = {
  +ModPerl, APR, NULL,
  +};
  +
  +#define MP_xs_loader_name %s::XSLoader::BOOTSTRAP
  +
  +static void modperl_xs_init(pTHX)
   {
  +int i;
   xs_init(aTHX); /* see modperl_xsinit.c */
   
  -newCONSTSUB(PL_defstash,
  -ModPerl::XSLoader::BOOTSTRAP,
  -newSViv(1));
  +for (i=0; MP_xs_loaders[i]; i++) {
  +char *name = Perl_form(aTHX_ MP_xs_loader_name, MP_xs_loaders[i]);
  +newCONSTSUB(PL_defstash, name, newSViv(1));
  +}
   }
   
   PerlInterpreter *modperl_startup(server_rec *s, apr_pool_t *p)
  @@ -65,7 +73,7 @@
   PL_perl_destruct_level = 2;
   }
   #endif
  -status = perl_parse(perl, my_xs_init, argc, argv, NULL);
  +status = perl_parse(perl, modperl_xs_init, argc, argv, NULL);
   
   if (status) {
   perror(perl_parse);
  
  
  



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

2001-09-09 Thread dougm

dougm   01/09/09 21:43:03

  Modified:lib/ModPerl WrapXS.pm
   src/modules/perl mod_perl.c
  Added:   lib/ModPerl XSLoader.pm
  Log:
  do not bootstrap xs libs outside of httpd
  
  Revision  ChangesPath
  1.20  +2 -2  modperl-2.0/lib/ModPerl/WrapXS.pm
  
  Index: WrapXS.pm
  ===
  RCS file: /home/cvs/modperl-2.0/lib/ModPerl/WrapXS.pm,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- WrapXS.pm 2001/06/26 16:26:51 1.19
  +++ WrapXS.pm 2001/09/10 04:43:02 1.20
  @@ -488,9 +488,9 @@
   
   package $module;
   $isa
  -use XSLoader ();
  +use ModPerl::XSLoader ();
   our \$VERSION = '0.01';
  -XSLoader::load __PACKAGE__;
  +ModPerl::XSLoader::load __PACKAGE__;
   
   $code
   
  
  
  
  1.1  modperl-2.0/lib/ModPerl/XSLoader.pm
  
  Index: XSLoader.pm
  ===
  package ModPerl::XSLoader;
  
  use strict;
  use warnings FATAL = 'all';
  
  use XSLoader ();
  
  BEGIN {
  unless (defined BOOTSTRAP) {
  *BOOTSTRAP = sub () { 0 };
  }
  }
  
  sub load {
  return unless BOOTSTRAP;
  XSLoader::load(@_);
  }
  
  1;
  
  
  
  1.64  +10 -1 modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.63
  retrieving revision 1.64
  diff -u -r1.63 -r1.64
  --- mod_perl.c2001/08/30 05:15:51 1.63
  +++ mod_perl.c2001/09/10 04:43:03 1.64
  @@ -24,6 +24,15 @@
   }
   #endif
   
  +static void my_xs_init(pTHX)
  +{
  +xs_init(aTHX); /* see modperl_xsinit.c */
  +
  +newCONSTSUB(PL_defstash,
  +ModPerl::XSLoader::BOOTSTRAP,
  +newSViv(1));
  +}
  +
   PerlInterpreter *modperl_startup(server_rec *s, apr_pool_t *p)
   {
   MP_dSCFG(s);
  @@ -56,7 +65,7 @@
   PL_perl_destruct_level = 2;
   }
   #endif
  -status = perl_parse(perl, xs_init, argc, argv, NULL);
  +status = perl_parse(perl, my_xs_init, argc, argv, NULL);
   
   if (status) {
   perror(perl_parse);
  
  
  



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

2001-08-29 Thread dougm

dougm   01/08/29 22:15:51

  Modified:src/modules/perl mod_perl.c modperl_filter.c modperl_types.h
  Log:
  change wbucket buffer api to use the address of r-output_filters
  so when a filter is removed from the chain, its is also remove from ours
  
  Revision  ChangesPath
  1.63  +1 -1  modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.62
  retrieving revision 1.63
  diff -u -r1.62 -r1.63
  --- mod_perl.c2001/08/08 16:20:31 1.62
  +++ mod_perl.c2001/08/30 05:15:51 1.63
  @@ -399,7 +399,7 @@
   
   /* setup buffer for output */
   rcfg-wbucket.pool = r-pool;
  -rcfg-wbucket.filters = r-output_filters;
  +rcfg-wbucket.filters = r-output_filters;
   rcfg-wbucket.outcnt = 0;
   }
   
  
  
  
  1.25  +2 -2  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.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- modperl_filter.c  2001/08/30 01:08:24 1.24
  +++ modperl_filter.c  2001/08/30 05:15:51 1.25
  @@ -34,7 +34,7 @@
   
   MP_TRACE_f(MP_FUNC, buffer length=%d\n, len);
   
  -return ap_pass_brigade(wb-filters, bb);
  +return ap_pass_brigade(*(wb-filters), bb);
   }
   
   MP_INLINE apr_status_t modperl_wbucket_flush(modperl_wbucket_t *wb)
  @@ -91,7 +91,7 @@
   filter-bb = bb;
   filter-pool = p;
   filter-wbucket.pool = p;
  -filter-wbucket.filters = f-next;
  +filter-wbucket.filters = f-next;
   filter-wbucket.outcnt = 0;
   
   MP_TRACE_f(MP_FUNC, filter=0x%lx, mode=%s\n,
  
  
  
  1.46  +1 -1  modperl-2.0/src/modules/perl/modperl_types.h
  
  Index: modperl_types.h
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_types.h,v
  retrieving revision 1.45
  retrieving revision 1.46
  diff -u -r1.45 -r1.46
  --- modperl_types.h   2001/08/19 17:33:32 1.45
  +++ modperl_types.h   2001/08/30 05:15:51 1.46
  @@ -168,7 +168,7 @@
   int outcnt;
   char outbuf[MP_IOBUFSIZE];
   apr_pool_t *pool;
  -ap_filter_t *filters;
  +ap_filter_t **filters;
   int header_parse;
   request_rec *r;
   } modperl_wbucket_t;
  
  
  



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

2001-07-13 Thread dougm

dougm   01/07/13 09:49:54

  Modified:src/modules/perl mod_perl.c
  Log:
  outline for future calls to PERL_SYS_{INIT,TERM} and PTHREAD_ATFORK
  
  Revision  ChangesPath
  1.59  +28 -0 modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.58
  retrieving revision 1.59
  diff -u -r1.58 -r1.59
  --- mod_perl.c2001/05/14 03:34:34 1.58
  +++ mod_perl.c2001/07/13 16:49:35 1.59
  @@ -219,9 +219,37 @@
   modperl_tls_create_request_rec(pconf);
   }
   
  +static apr_status_t modperl_sys_init(void)
  +{
  +#if 0 /*XXX*/
  +PERL_SYS_INIT(0, NULL);
  +
  +#ifdef PTHREAD_ATFORK
  +if (!ap_exists_config_define(PERL_PTHREAD_ATFORK_DONE)) {
  +PTHREAD_ATFORK(Perl_atfork_lock,
  +   Perl_atfork_unlock,
  +   Perl_atfork_unlock);
  +*(char **)apr_array_push(ap_server_config_defines) =
  +PERL_PTHREAD_ATFORK_DONE;
  +}
  +#endif
  +#endif
  +return APR_SUCCESS;
  +}
  +
  +static apr_status_t modperl_sys_term(void *data)
  +{
  +#if 0 /*XXX*/
  +PERL_SYS_TERM();
  +#endif
  +return APR_SUCCESS;
  +}
  +
   void modperl_hook_init(apr_pool_t *pconf, apr_pool_t *plog, 
  apr_pool_t *ptemp, server_rec *s)
   {
  +modperl_sys_init();
  +apr_pool_cleanup_register(pconf, NULL, modperl_sys_term, NULL);
   modperl_init_globals(s, pconf);
   modperl_init(s, pconf);
   }
  
  
  



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

2001-04-29 Thread dougm

dougm   01/04/29 21:38:37

  Modified:src/modules/perl mod_perl.c mod_perl.h modperl_types.h
  Log:
  integrate modperl_global module and initialize pconf/request_rec globals
  
  Revision  ChangesPath
  1.51  +13 -0 modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.50
  retrieving revision 1.51
  diff -u -r1.50 -r1.51
  --- mod_perl.c2001/04/25 16:19:44 1.50
  +++ mod_perl.c2001/04/30 04:38:34 1.51
  @@ -207,6 +207,12 @@
   }
   #endif /* USE_ITHREADS */
   
  +static void modperl_init_globals(apr_pool_t *pconf)
  +{
  +modperl_global_init_pconf(pconf, (void *)pconf);
  +modperl_tls_create_request_rec(pconf);
  +}
  +
   void modperl_hook_init(apr_pool_t *pconf, apr_pool_t *plog, 
  apr_pool_t *ptemp, server_rec *s)
   {
  @@ -237,6 +243,7 @@
   ap_add_version_component(pconf,
Perl_form(aTHX_ Perl/v%vd, PL_patchlevel));
   modperl_mgv_hash_handlers(pconf, s);
  +modperl_init_globals(pconf);
   #ifdef USE_ITHREADS
   modperl_init_clones(s, pconf);
   #endif
  @@ -253,11 +260,17 @@
   
   static int modperl_hook_post_read_request(request_rec *r)
   {
  +/* if 'PerlOptions +GlobalRequest' is outside a container */
  +modperl_global_request_cfg_set(r);
  +
   return modperl_input_filter_register_request(r);
   }
   
   static int modperl_hook_header_parser(request_rec *r)
   {
  +/* if 'PerlOptions +GlobalRequest' is inside a container */
  +modperl_global_request_cfg_set(r);
  +
   return modperl_input_filter_register_request(r);
   }
   
  
  
  
  1.30  +3 -0  modperl-2.0/src/modules/perl/mod_perl.h
  
  Index: mod_perl.h
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.h,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- mod_perl.h2001/04/19 21:26:34 1.29
  +++ mod_perl.h2001/04/30 04:38:35 1.30
  @@ -4,6 +4,8 @@
   #include modperl_apache_includes.h
   #include modperl_perl_includes.h
   
  +#define MP_THREADED (defined(USE_ITHREADS)  APR_HAS_THREADS)
  +
   extern module AP_MODULE_DECLARE_DATA perl_module;
   
   #include modperl_flags.h
  @@ -27,6 +29,7 @@
   #include modperl_filter.h
   #include modperl_pcw.h
   #include modperl_mgv.h
  +#include modperl_global.h
   
   void modperl_init(server_rec *s, apr_pool_t *p);
   void modperl_hook_init(apr_pool_t *pconf, apr_pool_t *plog, 
  
  
  
  1.39  +2 -0  modperl-2.0/src/modules/perl/modperl_types.h
  
  Index: modperl_types.h
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_types.h,v
  retrieving revision 1.38
  retrieving revision 1.39
  diff -u -r1.38 -r1.39
  --- modperl_types.h   2001/04/28 23:03:08 1.38
  +++ modperl_types.h   2001/04/30 04:38:35 1.39
  @@ -197,6 +197,8 @@
   
   typedef struct {
   HV *pnotes;
  +SV *global_request_obj;
  +U8 flags;
   modperl_wbucket_t wbucket;
   MpAV *handlers_per_dir[MP_HANDLER_NUM_PER_DIR];
   MpAV *handlers_per_srv[MP_HANDLER_NUM_PER_SRV];
  
  
  



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

2001-04-25 Thread dougm

dougm   01/04/25 09:19:45

  Modified:src/modules/perl mod_perl.c
  Log:
  fix #ifndef USE_ITHREADS
  
  Revision  ChangesPath
  1.50  +1 -1  modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.49
  retrieving revision 1.50
  diff -u -r1.49 -r1.50
  --- mod_perl.c2001/04/19 18:08:08 1.49
  +++ mod_perl.c2001/04/25 16:19:44 1.50
  @@ -17,7 +17,7 @@
   perl_free(perl);
   
   if (handles) {
  -modperl_xs_dl_handles_close(handles);
  +modperl_xs_dl_handles_close(cdata-pool, handles);
   }
   
   return APR_SUCCESS;
  
  
  



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

2001-04-19 Thread dougm

dougm   01/04/19 10:44:22

  Modified:src/modules/perl mod_perl.c modperl_filter.c
modperl_filter.h
  Log:
  register/run PerlInputFilterHandlers
  
  Revision  ChangesPath
  1.48  +30 -2 modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.47
  retrieving revision 1.48
  diff -u -r1.47 -r1.48
  --- mod_perl.c2001/04/12 16:15:19 1.47
  +++ mod_perl.c2001/04/19 17:44:15 1.48
  @@ -221,6 +221,11 @@
*/
   }
   
  +static int modperl_hook_pre_connection(conn_rec *c)
  +{
  +return modperl_input_filter_register_connection(c);
  +}
  +
   static void modperl_hook_post_config(apr_pool_t *pconf, apr_pool_t *plog,
apr_pool_t *ptemp, server_rec *s)
   {
  @@ -246,10 +251,23 @@
   return OK;
   }
   
  +static int modperl_hook_post_read_request(request_rec *r)
  +{
  +return modperl_input_filter_register_request(r);
  +}
  +
  +static int modperl_hook_header_parser(request_rec *r)
  +{
  +return modperl_input_filter_register_request(r);
  +}
  +
   void modperl_register_hooks(apr_pool_t *p)
   {
   ap_hook_open_logs(modperl_hook_init, NULL, NULL, APR_HOOK_MIDDLE);
   
  +ap_hook_post_config(modperl_hook_post_config, NULL, NULL,
  +APR_HOOK_MIDDLE);
  +
   ap_hook_handler(modperl_response_handler, NULL, NULL, APR_HOOK_MIDDLE);
   
   ap_hook_insert_filter(modperl_output_filter_register,
  @@ -259,11 +277,21 @@
 modperl_output_filter_handler,
 AP_FTYPE_CONTENT);
   
  +ap_register_input_filter(MODPERL_INPUT_FILTER_NAME,
  + modperl_input_filter_handler,
  + AP_FTYPE_CONTENT);
  +
  +ap_hook_pre_connection(modperl_hook_pre_connection,
  +   NULL, NULL, APR_HOOK_FIRST);
  +
   ap_hook_create_request(modperl_hook_create_request, NULL, NULL,
  APR_HOOK_MIDDLE);
   
  -ap_hook_post_config(modperl_hook_post_config, NULL, NULL,
  -APR_HOOK_MIDDLE);
  +ap_hook_post_read_request(modperl_hook_post_read_request, NULL, NULL,
  +  APR_HOOK_FIRST);
  +
  +ap_hook_header_parser(modperl_hook_header_parser, NULL, NULL,
  +  APR_HOOK_FIRST);
   
   modperl_register_handler_hooks();
   }
  
  
  
  1.12  +121 -3modperl-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.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- modperl_filter.c  2001/04/18 04:37:46 1.11
  +++ modperl_filter.c  2001/04/19 17:44:17 1.12
  @@ -79,7 +79,7 @@
   return filter;
   }
   
  -int modperl_run_filter(modperl_filter_t *filter)
  +int modperl_run_filter(modperl_filter_t *filter, ap_input_mode_t mode)
   {
   AV *args = Nullav;
   int status;
  @@ -88,7 +88,7 @@
   
   request_rec *r = filter-f-r;
   conn_rec*c = filter-f-c;
  -server_rec  *s = r ? r-server : NULL;
  +server_rec  *s = r ? r-server : c-base_server;
   apr_pool_t  *p = r ? r-pool : c-pool;
   
   MP_dINTERP_SELECT(r, c, s);
  @@ -98,6 +98,10 @@
 "APR::Brigade", filter-bb,
 NULL);
   
  +if (filter-mode == MP_INPUT_FILTER_MODE) {
  +av_push(args, newSViv(mode));
  +}
  +
   if ((status = modperl_callback(aTHX_ handler, p, s, args)) != OK) {
   status = modperl_errsv(aTHX_ status, r, s);
   }
  @@ -319,7 +323,7 @@
   }
   else {
   filter = modperl_filter_new(f, bb, MP_OUTPUT_FILTER_MODE);
  -status = modperl_run_filter(filter);
  +status = modperl_run_filter(filter, 0);
   }
   
   switch (status) {
  @@ -332,6 +336,32 @@
   }
   }
   
  +apr_status_t modperl_input_filter_handler(ap_filter_t *f,
  +  apr_bucket_brigade *bb,
  +  ap_input_mode_t mode)
  +{
  +modperl_filter_t *filter;
  +int status;
  +
  +if (APR_BRIGADE_IS_EOS(bb)) {
  +/* XXX: see about preventing this in the first place */
  +MP_TRACE_f(MP_FUNC, "first bucket is EOS, skipping callback\n");
  +return APR_SUCCESS;
  +}
  +else {
  +filter = modperl_filter_new(f, bb, MP_INPUT_FILTER_MODE);
  +status = modperl_run_filter(filter, mode);
  +}
  +
  +switch (status) {
  +  case OK:
  +  case DECLINED:
  +return APR_SUCCESS;
  +  default:
  +return status; /*XXX*/
  +}
  +}
 

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

2001-04-19 Thread dougm

dougm   01/04/19 11:08:10

  Modified:src/modules/perl mod_perl.c
  Log:
  tidy a bit
  
  Revision  ChangesPath
  1.49  +12 -10modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.48
  retrieving revision 1.49
  diff -u -r1.48 -r1.49
  --- mod_perl.c2001/04/19 17:44:15 1.48
  +++ mod_perl.c2001/04/19 18:08:08 1.49
  @@ -263,12 +263,14 @@
   
   void modperl_register_hooks(apr_pool_t *p)
   {
  -ap_hook_open_logs(modperl_hook_init, NULL, NULL, APR_HOOK_MIDDLE);
  +ap_hook_open_logs(modperl_hook_init,
  +  NULL, NULL, APR_HOOK_MIDDLE);
   
  -ap_hook_post_config(modperl_hook_post_config, NULL, NULL,
  -APR_HOOK_MIDDLE);
  +ap_hook_post_config(modperl_hook_post_config,
  +NULL, NULL, APR_HOOK_MIDDLE);
   
  -ap_hook_handler(modperl_response_handler, NULL, NULL, APR_HOOK_MIDDLE);
  +ap_hook_handler(modperl_response_handler,
  +NULL, NULL, APR_HOOK_MIDDLE);
   
   ap_hook_insert_filter(modperl_output_filter_register,
 NULL, NULL, APR_HOOK_LAST);
  @@ -284,14 +286,14 @@
   ap_hook_pre_connection(modperl_hook_pre_connection,
  NULL, NULL, APR_HOOK_FIRST);
   
  -ap_hook_create_request(modperl_hook_create_request, NULL, NULL,
  -   APR_HOOK_MIDDLE);
  +ap_hook_create_request(modperl_hook_create_request,
  +   NULL, NULL, APR_HOOK_MIDDLE);
   
  -ap_hook_post_read_request(modperl_hook_post_read_request, NULL, NULL,
  -  APR_HOOK_FIRST);
  +ap_hook_post_read_request(modperl_hook_post_read_request,
  +  NULL, NULL, APR_HOOK_FIRST);
   
  -ap_hook_header_parser(modperl_hook_header_parser, NULL, NULL,
  -  APR_HOOK_FIRST);
  +ap_hook_header_parser(modperl_hook_header_parser,
  +  NULL, NULL, APR_HOOK_FIRST);
   
   modperl_register_handler_hooks();
   }
  
  
  



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

2001-04-11 Thread dougm

dougm   01/04/11 18:03:14

  Modified:src/modules/perl mod_perl.c
  Log:
  i swear eric did this already
  
  Revision  ChangesPath
  1.45  +1 -1  modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.44
  retrieving revision 1.45
  diff -u -r1.44 -r1.45
  --- mod_perl.c2001/04/10 13:55:51 1.44
  +++ mod_perl.c2001/04/12 01:03:14 1.45
  @@ -14,7 +14,7 @@
   perl_destruct(perl);
   perl_free(perl);
   
  -if (handles = modperl_xs_dl_handles_get(cdata-pool)) {
  +if ((handles = modperl_xs_dl_handles_get(cdata-pool))) {
   modperl_xs_dl_handles_close(handles);
   }
   
  
  
  



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

2001-03-15 Thread dougm

dougm   01/03/15 21:08:15

  Modified:lib/ModPerl Code.pm
   src/modules/perl mod_perl.c modperl_callback.c
modperl_callback.h
  Log:
  use proper prefix for all modperl_callback_ functions
  
  Revision  ChangesPath
  1.46  +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.45
  retrieving revision 1.46
  diff -u -r1.45 -r1.46
  --- Code.pm   2001/03/16 04:58:57 1.45
  +++ Code.pm   2001/03/16 05:08:15 1.46
  @@ -167,7 +167,7 @@
   my @register_hooks;
   
   while (my($class, $prototype) = each %{ $self-{hook_proto} }) {
  -my $callback = canon_func($class, 'callback');
  +my $callback = canon_func('callback', $class);
   my $return = $prototype-{ret} eq 'void' ? '' : 'return';
   my $i = -1;
   
  
  
  
  1.37  +1 -1  modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.36
  retrieving revision 1.37
  diff -u -r1.36 -r1.37
  --- mod_perl.c2001/03/15 04:34:04 1.36
  +++ mod_perl.c2001/03/16 05:08:15 1.37
  @@ -286,7 +286,7 @@
   
   modperl_response_init(r);
   
  -retval = modperl_per_dir_callback(MP_RESPONSE_HANDLER, r);
  +retval = modperl_callback_per_dir(MP_RESPONSE_HANDLER, r);
   
   if ((retval == DECLINED)  r-content_type) {
   r-handler = r-content_type; /* let http_core or whatever try */
  
  
  
  1.31  +21 -16modperl-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.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- modperl_callback.c2001/03/16 04:58:58 1.30
  +++ modperl_callback.c2001/03/16 05:08:15 1.31
  @@ -91,8 +91,8 @@
   return status;
   }
   
  -int modperl_run_handlers(int idx, request_rec *r, conn_rec *c,
  - server_rec *s, int type, ...)
  +int modperl_callback_run_handlers(int idx, request_rec *r, conn_rec *c,
  +  server_rec *s, int type, ...)
   {
   #ifdef USE_ITHREADS
   pTHX;
  @@ -230,33 +230,38 @@
   return status;
   }
   
  -int modperl_per_dir_callback(int idx, request_rec *r)
  +int modperl_callback_per_dir(int idx, request_rec *r)
   {
  -return modperl_run_handlers(idx, r, NULL, r-server,
  -MP_HANDLER_TYPE_PER_DIR);
  +return modperl_callback_run_handlers(idx, r, NULL,
  + r-server,
  + MP_HANDLER_TYPE_PER_DIR);
   }
   
  -int modperl_per_srv_callback(int idx, request_rec *r)
  +int modperl_callback_per_srv(int idx, request_rec *r)
   {
  -return modperl_run_handlers(idx, r, NULL, r-server,
  -MP_HANDLER_TYPE_PER_SRV);
  +return modperl_callback_run_handlers(idx, r, NULL,
  + r-server,
  + MP_HANDLER_TYPE_PER_SRV);
   }
   
  -int modperl_connection_callback(int idx, conn_rec *c)
  +int modperl_callback_connection(int idx, conn_rec *c)
   {
  -return modperl_run_handlers(idx, NULL, c, c-base_server,
  -MP_HANDLER_TYPE_CONNECTION);
  +return modperl_callback_run_handlers(idx, NULL, c,
  + c-base_server,
  + MP_HANDLER_TYPE_CONNECTION);
   }
   
  -void modperl_process_callback(int idx, apr_pool_t *p, server_rec *s)
  +void modperl_callback_process(int idx, apr_pool_t *p, server_rec *s)
   {
  -modperl_run_handlers(idx, NULL, NULL, s, MP_HANDLER_TYPE_PROCESS, p);
  +modperl_callback_run_handlers(idx, NULL, NULL, s,
  +  MP_HANDLER_TYPE_PROCESS, p);
   }
   
  -void modperl_files_callback(int idx,
  +void modperl_callback_files(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_FILES,
  - pconf, plog, ptemp);
  +modperl_callback_run_handlers(idx, NULL, NULL, s,
  +  MP_HANDLER_TYPE_FILES,
  +  pconf, plog, ptemp);
   }
  
  
  
  1.17  +9 -9  modperl-2.0/src/modules/perl/modperl_callback.h
  
  Index: modperl_callback.h
  ===
  RCS file: 

cvs commit: modperl-2.0/src/modules/perl mod_perl.c modperl_config.c modperl_config.h modperl_interp.c modperl_types.h

2001-03-14 Thread dougm

dougm   01/03/14 00:22:51

  Modified:src/modules/perl mod_perl.c modperl_config.c
modperl_config.h modperl_interp.c modperl_types.h
  Log:
  allow PerlInterpLifetime to be per-dir for subrequest and request lifetime
  
  Revision  ChangesPath
  1.32  +3 -3  modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.31
  retrieving revision 1.32
  diff -u -r1.31 -r1.32
  --- mod_perl.c2001/03/14 05:22:49 1.31
  +++ mod_perl.c2001/03/14 08:22:47 1.32
  @@ -129,7 +129,7 @@
   char *name = modperl_server_desc(s, p);
   
   MP_TRACE_i(MP_FUNC, "PerlInterpLifetime set to %s for %s\n",
  -   modperl_interp_lifetime_desc(scfg), name);
  +   modperl_interp_lifetime_desc(scfg-interp_lifetime), name);
   #endif /* MP_TRACE */
   
   if (scfg-mip-tipool-idle) {
  @@ -220,8 +220,8 @@
"Min number of spare Perl interpreters"),
   MP_SRV_CMD_TAKE1("PerlInterpMaxRequests", interp_max_requests,
"Max number of requests per Perl interpreters"),
  -MP_SRV_CMD_TAKE1("PerlInterpLifetime", interp_lifetime,
  - "Lifetime of a Perl interpreter (connection or request)"),
  +MP_DIR_CMD_TAKE1("PerlInterpLifetime", interp_lifetime,
  + "Lifetime of a Perl interpreter"),
   #endif
   MP_CMD_ENTRIES,
   { NULL }, 
  
  
  
  1.20  +32 -7 modperl-2.0/src/modules/perl/modperl_config.c
  
  Index: modperl_config.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_config.c,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- modperl_config.c  2001/03/14 05:22:49 1.19
  +++ modperl_config.c  2001/03/14 08:22:48 1.20
  @@ -21,6 +21,12 @@
   void *modperl_create_dir_config(apr_pool_t *p, char *dir)
   {
   modperl_dir_config_t *dcfg = modperl_dir_config_new(p);
  +
  +#ifdef USE_ITHREADS
  +/* defaults to per-server lifetime */
  +dcfg-interp_lifetime = MP_INTERP_LIFETIME_UNDEF;
  +#endif
  +
   return dcfg;
   }
   
  @@ -226,31 +232,50 @@
   #ifdef USE_ITHREADS
   
   static const char *MP_interp_lifetime_desc[] = {
  -"none", "request", "connection",
  +"undef", "subrequest", "request", "connection",
   };
   
  -const char *modperl_interp_lifetime_desc(modperl_srv_config_t *scfg)
  +const char *modperl_interp_lifetime_desc(modperl_interp_lifetime_e lifetime)
   {
  -return MP_interp_lifetime_desc[scfg-interp_lifetime];
  +return MP_interp_lifetime_desc[lifetime];
   }
   
  +#define MP_INTERP_LIFETIME_OPTS "PerlInterpLifetime must be one of "
  +
  +#define MP_INTERP_LIFETIME_DIR_OPTS \
  +MP_INTERP_LIFETIME_OPTS "subrequest or request"
  +
  +#define MP_INTERP_LIFETIME_SRV_OPTS \
  +MP_INTERP_LIFETIME_OPTS "subrequest, request or connection"
  +
   MP_DECLARE_SRV_CMD(interp_lifetime)
   {
  +modperl_interp_lifetime_e *lifetime;
  +modperl_dir_config_t *dcfg = (modperl_dir_config_t *)dummy;
   MP_dSCFG(parms-server);
  +int is_per_dir = parms-path ? 1 : 0;
  +
  +lifetime = is_per_dir ? dcfg-interp_lifetime : scfg-interp_lifetime;
   
   switch (toLOWER(*arg)) {
  +  case 's':
  +if (strcaseEQ(arg, "subrequest")) {
  +*lifetime = MP_INTERP_LIFETIME_SUBREQUEST;
  +break;
  +}
 case 'r':
   if (strcaseEQ(arg, "request")) {
  -scfg-interp_lifetime = MP_INTERP_LIFETIME_REQUEST;
  +*lifetime = MP_INTERP_LIFETIME_REQUEST;
   break;
   }
 case 'c':
  -if (strcaseEQ(arg, "connection")) {
  -scfg-interp_lifetime = MP_INTERP_LIFETIME_CONNECTION;
  +if (!is_per_dir  strcaseEQ(arg, "connection")) {
  +*lifetime = MP_INTERP_LIFETIME_CONNECTION;
   break;
   }
 default:
  -return "PerlInterpLifetime must be one of connection or request";
  +return is_per_dir ?
  +MP_INTERP_LIFETIME_DIR_OPTS : MP_INTERP_LIFETIME_SRV_OPTS;
   };
   
   return NULL;
  
  
  
  1.19  +13 -3 modperl-2.0/src/modules/perl/modperl_config.h
  
  Index: modperl_config.h
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_config.h,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- modperl_config.h  2001/03/14 05:22:49 1.18
  +++ modperl_config.h  2001/03/14 08:22:48 1.19
  @@ -35,14 +35,20 @@
   MP_DECLARE_SRV_CMD(interp_max_requests);
   MP_DECLARE_SRV_CMD(interp_lifetime);
   
  -const char *modperl_interp_lifetime_desc(modperl_srv_config_t *scfg);
  +const char 

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

2001-03-14 Thread dougm

dougm   01/03/14 17:55:44

  Modified:src/modules/perl mod_perl.c modperl_gtop.c modperl_gtop.h
  Log:
  fixes to compile without MP_TRACE
  
  Revision  ChangesPath
  1.34  +2 -0  modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.33
  retrieving revision 1.34
  diff -u -r1.33 -r1.34
  --- mod_perl.c2001/03/15 01:47:00 1.33
  +++ mod_perl.c2001/03/15 01:55:44 1.34
  @@ -151,6 +151,8 @@
   
   MP_TRACE_i(MP_FUNC, "PerlInterpLifetime set to %s for %s\n",
  modperl_interp_lifetime_desc(scfg-interp_lifetime), name);
  +#else
  +char *name = NULL;
   #endif /* MP_TRACE */
   
   if (scfg-mip-tipool-idle) {
  
  
  
  1.7   +2 -2  modperl-2.0/src/modules/perl/modperl_gtop.c
  
  Index: modperl_gtop.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_gtop.c,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- modperl_gtop.c2001/03/04 18:49:38 1.6
  +++ modperl_gtop.c2001/03/15 01:55:44 1.7
  @@ -1,6 +1,6 @@
  -#ifdef MP_USE_GTOP
  -
   #include "mod_perl.h"
  +
  +#ifdef MP_USE_GTOP
   
   static int modperl_gtop_size_string(size_t size, char *size_string)
   {
  
  
  
  1.3   +4 -0  modperl-2.0/src/modules/perl/modperl_gtop.h
  
  Index: modperl_gtop.h
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_gtop.h,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- modperl_gtop.h2000/08/14 03:10:45 1.2
  +++ modperl_gtop.h2001/03/15 01:55:44 1.3
  @@ -1,6 +1,10 @@
   #ifndef MODPERL_GTOP_H
   #define MODPERL_GTOP_H
   
  +#ifndef MP_TRACE
  +#undef MP_USE_GTOP
  +#endif
  +
   #ifdef MP_USE_GTOP
   
   #include glibtop.h
  
  
  



cvs commit: modperl-2.0/src/modules/perl mod_perl.c modperl_interp.c

2001-03-14 Thread dougm

dougm   01/03/14 20:34:04

  Modified:src/modules/perl mod_perl.c modperl_interp.c
  Log:
  need to PERL_SET_CONTEXT to parent perl in non-threaded mpms
  give a little more trace info about interpreters in virtual hosts
  
  Revision  ChangesPath
  1.36  +3 -2  modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.35
  retrieving revision 1.36
  diff -u -r1.35 -r1.36
  --- mod_perl.c2001/03/15 02:17:35 1.35
  +++ mod_perl.c2001/03/15 04:34:04 1.36
  @@ -98,8 +98,9 @@
   /* if alloc flags is On, virtual host gets its own parent perl */
   if (MpSrvPARENT(scfg)) {
   perl = modperl_startup(s, p);
  -MP_TRACE_i(MP_FUNC, "modperl_startup() server=%s\n",
  -   s-server_hostname);
  +MP_TRACE_i(MP_FUNC,
  +   "created parent interpreter for VirtualHost %s\n",
  +   modperl_server_desc(s, p));
   }
   
   #ifdef USE_ITHREADS
  
  
  
  1.24  +6 -2  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.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- modperl_interp.c  2001/03/15 02:17:35 1.23
  +++ modperl_interp.c  2001/03/15 04:34:04 1.24
  @@ -215,8 +215,12 @@
   modperl_interp_lifetime_e lifetime;
   
   if (!scfg-threaded_mpm) {
  -MP_TRACE_i(MP_FUNC, "using parent 0x%lx for non-threaded mpm\n",
  -   (unsigned long)scfg-mip-parent);
  +MP_TRACE_i(MP_FUNC,
  +   "using parent 0x%lx for non-threaded mpm (%s:%d)\n",
  +   (unsigned long)scfg-mip-parent,
  +   s-server_hostname, s-port);
  +/* XXX: if no VirtualHosts w/ PerlOptions +Parent we can skip this */
  +PERL_SET_CONTEXT(scfg-mip-parent-perl);
   return scfg-mip-parent;
   }
   
  
  
  



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

2001-03-13 Thread dougm

dougm   01/03/13 20:22:51

  Modified:src/modules/perl mod_perl.c modperl_util.c modperl_util.h
  Log:
  add modperl_server_desc() function
  add more trace details when initializing the interpreter pool
  
  Revision  ChangesPath
  1.30  +25 -6 modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- mod_perl.c2001/03/09 23:46:34 1.29
  +++ mod_perl.c2001/03/14 04:22:51 1.30
  @@ -93,7 +93,7 @@
*/
   if (MpSrvPARENT(scfg) || MpSrvCLONE(scfg)) {
   MP_TRACE_i(MP_FUNC, "modperl_interp_init() server=%s\n",
  -   s-server_hostname);
  +   modperl_server_desc(s, p));
   modperl_interp_init(s, p, perl);
   }
   
  @@ -118,20 +118,39 @@
   #ifdef USE_ITHREADS
   static void modperl_init_clones(server_rec *s, apr_pool_t *p)
   {
  +#ifdef MP_TRACE
  +modperl_srv_config_t *base_scfg = modperl_srv_config_get(s);
  +char *base_name = modperl_server_desc(s, p);
  +#endif /* MP_TRACE */
  +
   for (; s; s=s-next) {
   MP_dSCFG(s);
  +#ifdef MP_TRACE
  +char *name = modperl_server_desc(s, p);
  +#endif /* MP_TRACE */
  +
   if (scfg-mip-tipool-idle) {
  -MP_TRACE_i(MP_FUNC, "%s interp already cloned\n",
  -   s-server_hostname);
  +#ifdef MP_TRACE
  +if (scfg-mip == base_scfg-mip) {
  +MP_TRACE_i(MP_FUNC,
  +   "%s interp pool inherited from %s\n",
  +   name, base_name);
  +}
  +else {
  +MP_TRACE_i(MP_FUNC,
  +   "%s interp pool already initialized\n",
  +   name);
  +}
  +#endif /* MP_TRACE */
   }
   else {
  -MP_TRACE_i(MP_FUNC, "cloning interp for %s\n",
  -   s-server_hostname);
  +MP_TRACE_i(MP_FUNC, "initializing interp pool for %s\n",
  +   name);
   modperl_tipool_init(scfg-mip-tipool);
   }
   }
   }
  -#endif
  +#endif /* USE_ITHREADS */
   
   void modperl_hook_init(apr_pool_t *pconf, apr_pool_t *plog, 
  apr_pool_t *ptemp, server_rec *s)
  
  
  
  1.5   +5 -0  modperl-2.0/src/modules/perl/modperl_util.c
  
  Index: modperl_util.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_util.c,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- modperl_util.c2001/03/13 05:09:02 1.4
  +++ modperl_util.c2001/03/14 04:22:51 1.5
  @@ -81,3 +81,8 @@
   
   return status;
   }
  +
  +char *modperl_server_desc(server_rec *s, apr_pool_t *p)
  +{
  +return apr_psprintf(p, "%s:%u", s-server_hostname, s-port);
  +}
  
  
  
  1.5   +2 -0  modperl-2.0/src/modules/perl/modperl_util.h
  
  Index: modperl_util.h
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_util.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- modperl_util.h2001/03/09 23:46:36 1.4
  +++ modperl_util.h2001/03/14 04:22:51 1.5
  @@ -20,4 +20,6 @@
   
   int modperl_require_module(pTHX_ const char *pv);
   
  +char *modperl_server_desc(server_rec *s, apr_pool_t *p);
  +
   #endif /* MODPERL_UTIL_H */
  
  
  



cvs commit: modperl-2.0/src/modules/perl mod_perl.c mod_perl.h modperl_callback.c modperl_callback.h modperl_config.c modperl_config.h modperl_filter.c modperl_interp.c modperl_types.h modperl_util.c modperl_util.h

2001-03-09 Thread dougm

dougm   01/03/09 15:46:38

  Modified:lib/ModPerl Code.pm
   src/modules/perl mod_perl.c mod_perl.h modperl_callback.c
modperl_callback.h modperl_config.c
modperl_config.h modperl_filter.c modperl_interp.c
modperl_types.h modperl_util.c modperl_util.h
  Log:
  remove use of Perl structures in modperl_handler_t,
  as they are not usable in a threaded environment.
  
  replace with pre-hashed mgv structures for fast lookup
  
  Revision  ChangesPath
  1.42  +3 -3  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.41
  retrieving revision 1.42
  diff -u -r1.41 -r1.42
  --- Code.pm   2001/02/22 03:49:22 1.41
  +++ Code.pm   2001/03/09 23:46:33 1.42
  @@ -87,10 +87,10 @@
   #XXX: allow disabling of PerDir hooks on a PerDir basis
   my @hook_flags = (map { canon_uc($_) } keys %hooks);
   my %flags = (
  -Srv = [qw(NONE CLONE PARENT ENABLED), @hook_flags, 'UNSET'],
  +Srv = [qw(NONE CLONE PARENT ENABLED AUTOLOAD), @hook_flags, 'UNSET'],
   Dir = [qw(NONE SEND_HEADER SETUP_ENV UNSET)],
   Interp = [qw(NONE IN_USE PUTBACK CLONED BASE)],
  -Handler = [qw(NONE PARSED METHOD OBJECT ANON)],
  +Handler = [qw(NONE PARSED METHOD OBJECT ANON AUTOLOAD)],
   );
   
   my %flags_lookup = map { $_,1 } qw(Srv Dir);
  @@ -453,7 +453,7 @@
   );
   
   my @c_src_names = qw(interp tipool log config options callback gtop
  - util filter);
  + util filter mgv pcw);
   my @g_c_names = map { "modperl_$_" } qw(hooks directives flags xsinit);
   my @c_names   = ('mod_perl', (map "modperl_$_", @c_src_names));
   sub c_files { [map { "$_.c" } @c_names, @g_c_names] }
  
  
  
  1.29  +22 -0 modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- mod_perl.c2001/02/04 22:19:11 1.28
  +++ mod_perl.c2001/03/09 23:46:34 1.29
  @@ -115,6 +115,24 @@
   }
   }
   
  +#ifdef USE_ITHREADS
  +static void modperl_init_clones(server_rec *s, apr_pool_t *p)
  +{
  +for (; s; s=s-next) {
  +MP_dSCFG(s);
  +if (scfg-mip-tipool-idle) {
  +MP_TRACE_i(MP_FUNC, "%s interp already cloned\n",
  +   s-server_hostname);
  +}
  +else {
  +MP_TRACE_i(MP_FUNC, "cloning interp for %s\n",
  +   s-server_hostname);
  +modperl_tipool_init(scfg-mip-tipool);
  +}
  +}
  +}
  +#endif
  +
   void modperl_hook_init(apr_pool_t *pconf, apr_pool_t *plog, 
  apr_pool_t *ptemp, server_rec *s)
   {
  @@ -139,6 +157,10 @@
   ap_add_version_component(pconf, MP_VERSION_STRING);
   ap_add_version_component(pconf,
Perl_form(aTHX_ "Perl/v%vd", PL_patchlevel));
  +modperl_mgv_hash_handlers(pconf, s);
  +#ifdef USE_ITHREADS
  +modperl_init_clones(s, pconf);
  +#endif
   }
   
   void modperl_register_hooks(apr_pool_t *p)
  
  
  
  1.26  +2 -0  modperl-2.0/src/modules/perl/mod_perl.h
  
  Index: mod_perl.h
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.h,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- mod_perl.h2001/01/21 23:19:03 1.25
  +++ mod_perl.h2001/03/09 23:46:34 1.26
  @@ -23,6 +23,8 @@
   #include "modperl_options.h"
   #include "modperl_directives.h"
   #include "modperl_filter.h"
  +#include "modperl_pcw.h"
  +#include "modperl_mgv.h"
   
   void modperl_init(server_rec *s, apr_pool_t *p);
   void modperl_hook_init(apr_pool_t *pconf, apr_pool_t *plog, 
  
  
  
  1.21  +55 -251   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.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- modperl_callback.c2001/03/04 18:41:33 1.20
  +++ modperl_callback.c2001/03/09 23:46:35 1.21
  @@ -1,41 +1,23 @@
   #include "mod_perl.h"
   
  -static void require_module(pTHX_ const char *pv)
  +modperl_handler_t *modperl_handler_new(apr_pool_t *p, const char *name)
   {
  -SV* sv;
  -dSP;
  -PUSHSTACKi(PERLSI_REQUIRE);
  -PUTBACK;
  -sv = sv_newmortal();
  -sv_setpv(sv, "require ");
  -sv_catpv(sv, pv);
  -eval_sv(sv, G_DISCARD);
  -SPAGAIN;
  -POPSTACK;
  -}
  -
  -modperl_handler_t 

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

2000-08-20 Thread dougm

dougm   00/08/20 20:01:31

  Modified:lib/Apache Build.pm
   lib/ModPerl Code.pm
   pod  modperl_dev.pod
   src/modules/perl mod_perl.c mod_perl.h modperl_callback.c
modperl_callback.h modperl_config.c
  Log:
  pass arguments to callbacks
  add PerlResponseHandler
  
  Revision  ChangesPath
  1.22  +1 -1  modperl-2.0/lib/Apache/Build.pm
  
  Index: Build.pm
  ===
  RCS file: /home/cvs/modperl-2.0/lib/Apache/Build.pm,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- Build.pm  2000/06/20 16:04:21 1.21
  +++ Build.pm  2000/08/21 03:01:27 1.22
  @@ -104,7 +104,7 @@
   
   if ($self-{MP_DEBUG}) {
   $self-{MP_TRACE} = 1;
  -$ccopts .= " -g";
  +$ccopts .= " -g -DMP_DEBUG";
   }
   
   if ($self-{MP_CCOPTS}) {
  
  
  
  1.34  +7 -3  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.33
  retrieving revision 1.34
  diff -u -r1.33 -r1.34
  --- Code.pm   2000/08/14 03:10:44 1.33
  +++ Code.pm   2000/08/21 03:01:28 1.34
  @@ -13,13 +13,15 @@
   PerSrv = [qw(PostReadRequest Trans)], #Init
   PerDir = [qw(HeaderParser
 Access Authen Authz
  -  Type Fixup Log)], #Init Response Cleanup
  +  Type Fixup Response Log)], #Init Cleanup
   Connection = [qw(PreConnection ProcessConnection)],
   );
   
   my %hooks = map { $_, canon_lc($_) }
   map { @{ $handlers{$_} } } keys %handlers;
   
  +my %not_ap_hook = map { $_, 1 } qw(response);
  +
   my %hook_proto = (
   Process= {
   ret  = 'void',
  @@ -165,7 +167,8 @@
   
   if (my $hook = $hooks{$handler}) {
   push @register_hooks,
  -  "ap_hook_$hook($name, NULL, NULL, AP_HOOK_LAST);";
  +  "ap_hook_$hook($name, NULL, NULL, AP_HOOK_LAST);"
  +unless $not_ap_hook{$hook};
   }
   
   my($protostr, $pass) = canon_proto($prototype, $name);
  @@ -439,7 +442,8 @@
  generate_trace  = {h = 'modperl_trace.h'},
   );
   
  -my @c_src_names = qw(interp tipool log config options callback gtop);
  +my @c_src_names = qw(interp tipool log config options callback gtop
  + util apache_xs);
   my @g_c_names = map { "modperl_$_" } qw(hooks directives flags xsinit);
   my @c_names   = ('mod_perl', (map "modperl_$_", @c_src_names));
   sub c_files { [map { "$_.c" } @c_names, @g_c_names] }
  
  
  
  1.5   +2 -0  modperl-2.0/pod/modperl_dev.pod
  
  Index: modperl_dev.pod
  ===
  RCS file: /home/cvs/modperl-2.0/pod/modperl_dev.pod,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- modperl_dev.pod   2000/06/20 16:04:33 1.4
  +++ modperl_dev.pod   2000/08/21 03:01:29 1.5
  @@ -114,6 +114,8 @@
   
   =item PerlFixupHandler
   
  +=item PerlResponseHandler
  +
   =item PerlLogHandler
   
   =item PerlPostReadRequestHandler
  
  
  
  1.21  +5 -0  modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- mod_perl.c2000/08/14 03:10:45 1.20
  +++ mod_perl.c2000/08/21 03:01:30 1.21
  @@ -153,6 +153,11 @@
   }; 
   
   static handler_rec modperl_handlers[] = {
  +#if 0
  +{ "perl-script", modperl_1xx_response_handler },
  +#endif
  +/* this response handler does not do any extra crap */
  +{ "modperl", modperl_response_handler },
   { NULL },
   };
   
  
  
  
  1.19  +4 -0  modperl-2.0/src/modules/perl/mod_perl.h
  
  Index: mod_perl.h
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.h,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- mod_perl.h2000/08/14 03:10:45 1.18
  +++ mod_perl.h2000/08/21 03:01:30 1.19
  @@ -24,6 +24,9 @@
   #include "apr_lock.h"
   #include "apr_strings.h"
   
  +#include "ap_buckets.h"
  +#include "util_filter.h"
  +
   extern module MODULE_VAR_EXPORT perl_module;
   
   #include "modperl_flags.h"
  @@ -33,6 +36,7 @@
   #include "modperl_gtop.h"
   #endif
   #include "modperl_types.h"
  +#include "modperl_util.h"
   #include "modperl_config.h"
   #include "modperl_callback.h"
   #include "modperl_tipool.h"
  
  
  
  1.14  +89 -11modperl-2.0/src/modules/perl/modperl_callback.c
  
  Index: modperl_callback.c
  

cvs commit: modperl-2.0/src/modules/perl mod_perl.c mod_perl.h modperl_callback.c modperl_callback.h modperl_config.c modperl_config.h modperl_gtop.c modperl_gtop.h modperl_interp.c modperl_interp.h modperl_options.c modperl_options.h modperl_tipool.c modperl_tipool.h modperl_types.h

2000-08-13 Thread dougm

dougm   00/08/13 20:10:48

  Modified:lib/ModPerl Code.pm
   src/modules/perl mod_perl.c mod_perl.h modperl_callback.c
modperl_callback.h modperl_config.c
modperl_config.h modperl_gtop.c modperl_gtop.h
modperl_interp.c modperl_interp.h modperl_options.c
modperl_options.h modperl_tipool.c modperl_tipool.h
modperl_types.h
  Log:
  adjust to apr_ prefix
  
  Revision  ChangesPath
  1.33  +10 -10modperl-2.0/lib/ModPerl/Code.pm
  
  Index: Code.pm
  ===
  RCS file: /home/cvs/modperl-2.0/lib/ModPerl/Code.pm,v
  retrieving revision 1.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- Code.pm   2000/06/20 16:04:28 1.32
  +++ Code.pm   2000/08/14 03:10:44 1.33
  @@ -23,14 +23,14 @@
   my %hook_proto = (
   Process= {
   ret  = 'void',
  -args = [{type = 'ap_pool_t', name = 'p'},
  +args = [{type = 'apr_pool_t', name = 'p'},
{type = 'server_rec', name = 's'}],
   },
   Files  = {
   ret  = 'void',
  -args = [{type = 'ap_pool_t', name = 'pconf'},
  - {type = 'ap_pool_t', name = 'plog'},
  - {type = 'ap_pool_t', name = 'ptemp'},
  +args = [{type = 'apr_pool_t', name = 'pconf'},
  + {type = 'apr_pool_t', name = 'plog'},
  + {type = 'apr_pool_t', name = 'ptemp'},
{type = 'server_rec', name = 's'}],
   },
   PerSrv = {
  @@ -227,14 +227,14 @@
   {
   $prototype-{cfg}-{get};
   if (!MpSrvENABLED(scfg)) {
  -return ap_pstrcat(parms-pool,
  -  "Perl is disabled for server ",
  -  parms-server-server_hostname, NULL);
  +return apr_pstrcat(parms-pool,
  +   "Perl is disabled for server ",
  +   parms-server-server_hostname, NULL);
   }
   if (!$flag(scfg)) {
  -return ap_pstrcat(parms-pool,
  -  "$h_name is disabled for server ",
  -  parms-server-server_hostname, NULL);
  +return apr_pstrcat(parms-pool,
  +   "$h_name is disabled for server ",
  +   parms-server-server_hostname, NULL);
   }
   MP_TRACE_d(MP_FUNC, "push \@%s, %s\\n", parms-cmd-name, arg);
   return modperl_cmd_push_handlers(($av), arg, parms-pool);
  
  
  
  1.20  +6 -6  modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- mod_perl.c2000/06/14 16:07:06 1.19
  +++ mod_perl.c2000/08/14 03:10:45 1.20
  @@ -1,6 +1,6 @@
   #include "mod_perl.h"
   
  -PerlInterpreter *modperl_startup(server_rec *s, ap_pool_t *p)
  +PerlInterpreter *modperl_startup(server_rec *s, apr_pool_t *p)
   {
   MP_dSCFG(s);
   PerlInterpreter *perl;
  @@ -42,7 +42,7 @@
   return perl;
   }
   
  -void modperl_init(server_rec *base_server, ap_pool_t *p)
  +void modperl_init(server_rec *base_server, apr_pool_t *p)
   {
   server_rec *s;
   modperl_srv_config_t *base_scfg =
  @@ -112,14 +112,14 @@
   }
   }
   
  -void modperl_hook_init(ap_pool_t *pconf, ap_pool_t *plog, 
  -   ap_pool_t *ptemp, server_rec *s)
  +void modperl_hook_init(apr_pool_t *pconf, apr_pool_t *plog, 
  +   apr_pool_t *ptemp, server_rec *s)
   {
   modperl_init(s, pconf);
   }
   
  -void modperl_pre_config_handler(ap_pool_t *p, ap_pool_t *plog,
  -ap_pool_t *ptemp)
  +void modperl_pre_config_handler(apr_pool_t *p, apr_pool_t *plog,
  +apr_pool_t *ptemp)
   {
   }
   
  
  
  
  1.18  +6 -6  modperl-2.0/src/modules/perl/mod_perl.h
  
  Index: mod_perl.h
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.h,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- mod_perl.h2000/07/26 07:20:39 1.17
  +++ mod_perl.h2000/08/14 03:10:45 1.18
  @@ -41,13 +41,13 @@
   #include "modperl_options.h"
   #include "modperl_directives.h"
   
  -void modperl_init(server_rec *s, ap_pool_t *p);
  -void modperl_hook_init(ap_pool_t *pconf, ap_pool_t *plog, 
  -   ap_pool_t *ptemp, server_rec *s);
  -void modperl_pre_config_handler(ap_pool_t *p, ap_pool_t *plog,
  -ap_pool_t *ptemp);
  +void modperl_init(server_rec *s, apr_pool_t *p);
  +void modperl_hook_init(apr_pool_t *pconf, apr_pool_t *plog, 
  +   

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

2000-06-13 Thread dougm

dougm   00/06/13 14:05:55

  Modified:lib/ModPerl Code.pm
   pod  modperl_dev.pod
   src/modules/perl mod_perl.c mod_perl.h modperl_callback.c
modperl_config.c modperl_config.h modperl_types.h
  Log:
  first cut of PerlOptions directive
  
  Revision  ChangesPath
  1.30  +46 -15modperl-2.0/lib/ModPerl/Code.pm
  
  Index: Code.pm
  ===
  RCS file: /home/cvs/modperl-2.0/lib/ModPerl/Code.pm,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- Code.pm   2000/06/12 19:37:25 1.29
  +++ Code.pm   2000/06/13 21:05:35 1.30
  @@ -81,15 +81,17 @@
   $directive_proto{$k}-{ret} = 'const char *';
   }
   
  +#XXX: allow disabling of PerDir hooks on a PerDir basis
  +my @hook_flags = (map { canon_uc($_) } keys %hooks);
   my %flags = (
  -Srv = [qw(NONE PERL_TAINT_CHECK PERL_WARN FRESH_RESTART
  -   PERL_CLONE PERL_ALLOC PERL_OFF UNSET)],
  -Dir = [qw(NONE INCPUSH SENDHDR SENTHDR ENV CLEANUP RCLEANUP)],
  +Srv = [qw(NONE CLONE PARENT ENABLED), @hook_flags, 'UNSET'],
  +Dir = [qw(NONE SEND_HEADER SETUP_ENV UNSET)],
   Interp = [qw(NONE IN_USE PUTBACK CLONED BASE)],
   Handler = [qw(NONE PARSED METHOD OBJECT ANON)],
   );
   
  -my %flags_lookup = map { $_,1 } qw(Srv);
  +my %flags_lookup = map { $_,1 } qw(Srv Dir);
  +my %flags_options = map { $_,1 } qw(Srv);
   
   sub new {
   my $class = shift;
  @@ -201,10 +203,11 @@
   my $i = 0;
   
   for my $h (@$handlers) {
  +my $h_name = join $h, qw(Perl Handler);
   my $name = canon_func('cmd', $h, 'handlers');
   my $cmd_name = canon_define('cmd', $h, 'entry');
   my $protostr = canon_proto($prototype, $name);
  -
  +my $flag = 'MpSrv' . canon_uc($h);
   my $ix = $self-{handler_index}-{$class}-[$i++];
   my $av = "$prototype-{cfg}-{name}-handlers[$ix]";
   
  @@ -215,7 +218,7 @@
   print $h_fh EOF;
   
   #define $cmd_name \\
  -{"Perl${h}Handler", $name, NULL, \\
  +{"$h_name", $name, NULL, \\
$prototype-{scope}, ITERATE, "Subroutine name"}
   
   EOF
  @@ -223,11 +226,16 @@
   $protostr
   {
   $prototype-{cfg}-{get};
  -if (MpSrvPERL_OFF(scfg)) {
  +if (!MpSrvENABLED(scfg)) {
   return ap_pstrcat(parms-pool,
 "Perl is disabled for server ",
 parms-server-server_hostname, NULL);
   }
  +if (!$flag(scfg)) {
  +return ap_pstrcat(parms-pool,
  +  "$h_name is disabled for server ",
  +  parms-server-server_hostname, NULL);
  +}
   MP_TRACE_d(MP_FUNC, "push \@%s, %s\\n", parms-cmd-name, arg);
   return modperl_cmd_push_handlers(($av), arg, parms-pool);
   }
  @@ -243,24 +251,34 @@
   sub generate_flags {
   my($self, $h_fh, $c_fh) = @_;
   
  +my $n = 1;
  +
   while (my($class, $opts) = each %{ $self-{flags} }) {
   my $i = 0;
   my @lookup = ();
   my $lookup_proto = "";
  +my @dumper;
   if ($flags_lookup{$class}) {
   $lookup_proto = join canon_func('flags', 'lookup', $class),
  -  'int ', '(const char *str)';
  +  'U32 ', '(const char *str)';
   push @lookup, "$lookup_proto {";
   }
  +
  +my $flags = join $class, qw(Mp FLAGS);
   
  -print $h_fh "\n#define Mp${class}FLAGS(p) p-flags\n";
  +print $h_fh "\n#define $flags(p) ",
  +  ($flags_options{$class} ? '(p)-flags-opts' : '(p)-flags'), "\n";
  +
   $class = "Mp$class";
  +print $h_fh "\n#define ${class}Type $n\n";
  +$n++;
   
   for my $f (@$opts) {
   my $flag = "${class}_f_$f";
   my $cmd  = $class . $f;
  +my $name = canon_name($f);
  +
   if (@lookup) {
  -my $name = canon_name($f);
   push @lookup, qq(   if (strEQ(str, "$name")) return $flag;);
   }
   
  @@ -268,19 +286,32 @@
   
   /* $f */
   #define $flag $i
  -#define $cmd(p)  ((p)-flags  $flag)
  -#define ${cmd}_On(p)  ((p)-flags |= $flag)
  -#define ${cmd}_Off(p) ((p)-flags = ~$flag)
  +#define $cmd(p)  ($flags(p)  $flag)
  +#define ${cmd}_On(p)  ($flags(p) |= $flag)
  +#define ${cmd}_Off(p) ($flags(p) = ~$flag)
   
   EOF
  +push @dumper,
  +  qq{fprintf(stderr, " $name %s\\n", \\
  + ($flags(p)  $i) ? "On " : "Off");};
  +
   $i += $i || 1;
   }
   if (@lookup) {
  -print $c_fh join "\n", @lookup, "   return -1;\n}\n";
  +print $c_fh join "\n", @lookup, "   return 0;\n}\n";
   print $h_fh "$lookup_proto;\n";
   }
  +
  +shift @dumper; #NONE
  +print $h_fh join ' \\'."\n", 
  +   

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

2000-06-12 Thread dougm

dougm   00/06/12 11:20:55

  Modified:src/modules/perl mod_perl.c
  Log:
  make sure vhost config points to a mip
  
  Revision  ChangesPath
  1.16  +23 -16modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- mod_perl.c2000/06/12 03:30:51 1.15
  +++ mod_perl.c2000/06/12 18:20:55 1.16
  @@ -42,39 +42,38 @@
   return perl;
   }
   
  -void modperl_init(server_rec *s, ap_pool_t *p)
  +void modperl_init(server_rec *base_server, ap_pool_t *p)
   {
  -server_rec *base_server = s;
  -server_rec *srvp;
  +server_rec *s;
  +modperl_srv_config_t *base_scfg =
  +  (modperl_srv_config_t *)
  +ap_get_module_config(base_server-module_config, perl_module);
   PerlInterpreter *base_perl = modperl_startup(base_server, p);
  -modperl_interp_init(base_server, p, base_perl);
   
  -{
  -MP_dSCFG(base_server);
  -MpInterpBASE_On(scfg-mip-parent);
  -}
  +modperl_interp_init(base_server, p, base_perl);
  +MpInterpBASE_On(base_scfg-mip-parent);
   
  -for (srvp=base_server-next; srvp; srvp=srvp-next) {
  -MP_dSCFG(srvp);
  +for (s=base_server-next; s; s=s-next) {
  +MP_dSCFG(s);
   PerlInterpreter *perl = base_perl;
   
   if (1) {
   /* XXX: using getenv() just for testing here */
   char *do_alloc = getenv("MP_SRV_ALLOC_TEST");
   char *do_clone = getenv("MP_SRV_CLONE_TEST");
  -if (do_alloc  strEQ(do_alloc, srvp-server_hostname)) {
  +if (do_alloc  strEQ(do_alloc, s-server_hostname)) {
   MpSrvPERL_ALLOC_On(scfg);
   }
  -if (do_clone  strEQ(do_clone, srvp-server_hostname)) {
  +if (do_clone  strEQ(do_clone, s-server_hostname)) {
   MpSrvPERL_CLONE_On(scfg);
   }
   }
   
   /* if alloc flags is On, virtual host gets its own parent perl */
   if (MpSrvPERL_ALLOC(scfg)) {
  -perl = modperl_startup(srvp, p);
  +perl = modperl_startup(s, p);
   MP_TRACE_i(MP_FUNC, "modperl_startup() server=%s\n",
  -   srvp-server_hostname);
  +   s-server_hostname);
   }
   
   #ifdef USE_ITHREADS
  @@ -83,13 +82,21 @@
*/
   if (MpSrvPERL_ALLOC(scfg) || MpSrvPERL_CLONE(scfg)) {
   MP_TRACE_i(MP_FUNC, "modperl_interp_init() server=%s\n",
  -   srvp-server_hostname);
  -modperl_interp_init(srvp, p, perl);
  +   s-server_hostname);
  +modperl_interp_init(s, p, perl);
   }
   
   /* if we allocated a parent perl, mark it to be destroyed */
   if (MpSrvPERL_ALLOC(scfg)) {
   MpInterpBASE_On(scfg-mip-parent);
  +}
  +
  +if (!scfg-mip) {
  +/* since mips are created after merge_server_configs()
  + * need to point to the base mip here if this vhost
  + * doesn't have its own
  + */
  +scfg-mip = base_scfg-mip;
   }
   #endif
   }
  
  
  



cvs commit: modperl-2.0/src/modules/perl mod_perl.c mod_perl.h modperl_config.c modperl_config.h modperl_interp.c modperl_types.h

2000-05-23 Thread dougm

dougm   00/05/23 13:54:47

  Modified:lib/ModPerl Code.pm
   src/modules/perl mod_perl.c mod_perl.h modperl_config.c
modperl_config.h modperl_interp.c modperl_types.h
  Log:
  integrate with tipool
  implement PerlInterpMaxRequests
  
  Revision  ChangesPath
  1.25  +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.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- Code.pm   2000/04/30 18:36:51 1.24
  +++ Code.pm   2000/05/23 20:54:42 1.25
  @@ -377,7 +377,7 @@
  generate_trace  = {h = 'modperl_trace.h'},
   );
   
  -my @c_src_names = qw(interp log config callback gtop);
  +my @c_src_names = qw(interp tipool log config callback gtop);
   my @g_c_names = map { "modperl_$_" } qw(hooks directives xsinit);
   my @c_names   = ('mod_perl', (map "modperl_$_", @c_src_names));
   sub c_files { [map { "$_.c" } @c_names, @g_c_names] }
  
  
  
  1.14  +2 -0  modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- mod_perl.c2000/04/29 02:37:36 1.13
  +++ mod_perl.c2000/05/23 20:54:44 1.14
  @@ -79,6 +79,8 @@
"Max number of spare Perl interpreters"),
   MP_SRV_CMD_TAKE1("PerlInterpMinSpare", interp_min_spare,
"Min number of spare Perl interpreters"),
  +MP_SRV_CMD_TAKE1("PerlInterpMaxRequests", interp_max_requests,
  + "Max number of requests per Perl interpreters"),
   #endif
   MP_CMD_ENTRIES,
   { NULL }, 
  
  
  
  1.14  +1 -0  modperl-2.0/src/modules/perl/mod_perl.h
  
  Index: mod_perl.h
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.h,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- mod_perl.h2000/04/28 20:07:34 1.13
  +++ mod_perl.h2000/05/23 20:54:44 1.14
  @@ -34,6 +34,7 @@
   #include "modperl_types.h"
   #include "modperl_config.h"
   #include "modperl_callback.h"
  +#include "modperl_tipool.h"
   #include "modperl_interp.h"
   #include "modperl_log.h"
   
  
  
  
  1.10  +3 -2  modperl-2.0/src/modules/perl/modperl_config.c
  
  Index: modperl_config.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_config.c,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- modperl_config.c  2000/04/27 21:42:25 1.9
  +++ modperl_config.c  2000/05/23 20:54:44 1.10
  @@ -119,7 +119,7 @@
   
   #ifdef USE_ITHREADS
   scfg-interp_pool_cfg = 
  -(modperl_interp_pool_config_t *)
  +(modperl_tipool_config_t *)
   ap_pcalloc(p, sizeof(*scfg-interp_pool_cfg));
   
   /* XXX: determine reasonable defaults */
  @@ -127,7 +127,7 @@
   scfg-interp_pool_cfg-max_spare = 3;
   scfg-interp_pool_cfg-min_spare = 3;
   scfg-interp_pool_cfg-max = 5;
  -
  +scfg-interp_pool_cfg-max_requests = 2000;
   #endif /* USE_ITHREADS */
   
   return scfg;
  @@ -198,5 +198,6 @@
   MP_IMP_INTERP_POOL_CFG(max);
   MP_IMP_INTERP_POOL_CFG(max_spare);
   MP_IMP_INTERP_POOL_CFG(min_spare);
  +MP_IMP_INTERP_POOL_CFG(max_requests);
   
   #endif /* USE_ITHREADS */
  
  
  
  1.10  +1 -0  modperl-2.0/src/modules/perl/modperl_config.h
  
  Index: modperl_config.h
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_config.h,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- modperl_config.h  2000/04/27 21:42:25 1.9
  +++ modperl_config.h  2000/05/23 20:54:44 1.10
  @@ -30,6 +30,7 @@
   MP_DECLARE_SRV_CMD(interp_max);
   MP_DECLARE_SRV_CMD(interp_max_spare);
   MP_DECLARE_SRV_CMD(interp_min_spare);
  +MP_DECLARE_SRV_CMD(interp_max_requests);
   #endif
   
   #define MP_SRV_CMD_TAKE1(name, item, desc) \
  
  
  
  1.12  +38 -231   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.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- modperl_interp.c  2000/05/01 23:29:04 1.11
  +++ modperl_interp.c  2000/05/23 20:54:44 1.12
  @@ -7,120 +7,6 @@
   
   #ifdef USE_ITHREADS
   
  -modperl_list_t *modperl_list_new(ap_pool_t *p)
  -{
  -modperl_list_t *listp = 
  -(modperl_list_t *)ap_pcalloc(p, sizeof(*listp));
  -return 

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

2000-04-18 Thread dougm

dougm   00/04/18 15:59:15

  Modified:lib/ModPerl Code.pm
   src/modules/perl mod_perl.c modperl_callback.h
modperl_config.c modperl_config.h modperl_log.c
modperl_types.h
  Log:
  integrate with modperl_callback.c
  beef up tracing support
  
  Revision  ChangesPath
  1.12  +43 -9 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.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- Code.pm   2000/04/17 21:11:06 1.11
  +++ Code.pm   2000/04/18 22:59:13 1.12
  @@ -49,12 +49,14 @@
{type = 'char', name = 'arg'}],
   cfg  = {get = 'MP_dSCFG(parms-server)',
name = 'scfg'},
  +scope = 'RSRC_CONF',
   },
   PerDir = {
   args = [{type = 'cmd_parms', name = 'parms'},
{type = 'modperl_dir_config_t', name = 'dcfg'},
{type = 'char', name = 'arg'}],
   cfg  = {get = '', name = 'dcfg'},
  +scope = 'OR_ALL',
   },
   );
   
  @@ -70,7 +72,7 @@
   Srv = [qw(NONE PERL_TAINT_CHECK PERL_WARN FRESH_RESTART)],
   Dir = [qw(NONE INCPUSH SENDHDR SENTHDR ENV CLEANUP RCLEANUP)],
   Interp = [qw(NONE IN_USE PUTBACK CLONED)],
  -Handler = [qw(NONE METHOD)],
  +Handler = [qw(NONE PARSED METHOD OBJECT ANON)],
   );
   
   sub new {
  @@ -141,17 +143,27 @@
   
   for my $h (@$handlers) {
   my $name = canon_func('cmd', $h, 'handlers');
  +my $cmd_name = canon_define('cmd', $h, 'entry');
   my $protostr = canon_proto($prototype, $name);
   
   my $ix = $self-{handler_index}-{$class}-[$i++];
   my $av = "$prototype-{cfg}-{name}-handlers[$ix]";
   
   print $h_fh "$protostr;\n";
  +
  +print $h_fh EOF;
  +
  +#define $cmd_name \\
  +{"Perl${h}Handler", $name, NULL, \\
  + $prototype-{scope}, ITERATE, "Subroutine name"}
  +
  +EOF
   print $c_fh EOF;
   $protostr
   {
   $prototype-{cfg}-{get};
  -return modperl_cmd_push_handlers($av, arg, parms-pool);
  +MP_TRACE_d(MP_FUNC, "push \@%s, %s\n", parms-cmd-name, arg);
  +return modperl_cmd_push_handlers(($av), arg, parms-pool);
   }
   EOF
   }
  @@ -185,22 +197,34 @@
   }
   }
   
  -my @trace = qw(d s h g c i m);
  +my %trace = (
  +#'a' = 'all',
  +'d' = 'directive processing',
  +'s' = 'perl sections',
  +'h' = 'handlers',
  +'m' = 'memory allocations',
  +'i' = 'interpreter pool management',
  +'g' = 'Perl runtime interaction',
  +);
   
   sub generate_trace {
   my($self, $h_fh) = @_;
   
   my $i = 1;
  +my @trace = sort keys %trace;
   my $opts = join '', @trace;
  +my $tl = "MP_debug_level";
   
   print $h_fh EOF;
  -extern U32 MP_debug_level;
  +extern U32 $tl;
   
   #define MP_TRACE_OPTS "$opts"
   
   #ifdef MP_TRACE
  -#define MP_TRACE_a if (MP_debug_level) modperl_trace
  -#define MP_TRACE_a_do(exp) if (MP_debug_level) exp
  +#define MP_TRACE_a if ($tl) modperl_trace
  +#define MP_TRACE_a_do(exp) if ($tl) { \\
  +exp; \\
  +}
   #else
   #define MP_TRACE_a if (0) modperl_trace
   #define MP_TRACE_a_do(exp)
  @@ -208,21 +232,31 @@
   
   EOF
   
  +my @dumper;
   for my $type (@trace) {
   my $define = "#define MP_TRACE_$type";
   my $define_do = join '_', $define, 'do';
   
   print $h_fh EOF;
   #ifdef MP_TRACE
  -$define if (MP_debug_level  $i) modperl_trace
  -$define_do(exp) if (MP_debug_level  $i) exp
  +$define if ($tl  $i) modperl_trace
  +$define_do(exp) if ($tl  $i) { \\
  +exp; \\
  +}
   #else
   $define if (0) modperl_trace
   $define_do(exp)
   #endif
   EOF
  +push @dumper,
  +  qq{fprintf(stderr, " $type %s ($trace{$type})\\n", ($tl  $i) ? "On " : 
"Off");};
   $i += $i;
   }
  +
  +print $h_fh join ' \\'."\n", 
  + '#define MP_TRACE_dump_flags()',
  + qq{fprintf(stderr, "mod_perl trace flags dump:\\n");},
  + @dumper;
   }
   
   sub ins_underscore {
  @@ -277,7 +311,7 @@
  generate_trace  = {h = 'modperl_trace.h'},
   );
   
  -my @c_src_names = qw(interp log config gtop);
  +my @c_src_names = qw(interp log config callback gtop);
   my @g_c_names = map { "modperl_$_" } qw(hooks directives xsinit);
   my @c_names   = ('mod_perl', (map "modperl_$_", @c_src_names), @g_c_names);
   sub c_files { [map { "$_.c" } @c_names] }
  
  
  
  1.9   +1 -0  modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- mod_perl.c

cvs commit: modperl-2.0/src/modules/perl mod_perl.c mod_perl.h modperl_config.c modperl_config.h modperl_types.h

2000-04-17 Thread dougm

dougm   00/04/17 14:11:07

  Modified:lib/ModPerl Code.pm
   src/modules/perl mod_perl.c mod_perl.h modperl_config.c
modperl_config.h modperl_types.h
  Log:
  hook in xsinit
  add PerlSwitches directive
  
  Revision  ChangesPath
  1.11  +6 -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.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- Code.pm   2000/04/17 07:10:55 1.10
  +++ Code.pm   2000/04/17 21:11:06 1.11
  @@ -278,7 +278,7 @@
   );
   
   my @c_src_names = qw(interp log config gtop);
  -my @g_c_names = map { "modperl_$_" } qw(hooks directives);
  +my @g_c_names = map { "modperl_$_" } qw(hooks directives xsinit);
   my @c_names   = ('mod_perl', (map "modperl_$_", @c_src_names), @g_c_names);
   sub c_files { [map { "$_.c" } @c_names] }
   sub o_files { [map { "$_.o" } @c_names] }
  @@ -360,6 +360,11 @@
   }
   
   $self-postamble;
  +
  +my $xsinit = "$self-{path}/modperl_xsinit.c";
  +warn "generating...$xsinit\n";
  +
  +ExtUtils::Embed::xsinit($xsinit);
   }
   
   1;
  
  
  
  1.8   +8 -5  modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- mod_perl.c2000/04/17 07:10:55 1.7
  +++ mod_perl.c2000/04/17 21:11:06 1.8
  @@ -2,13 +2,13 @@
   
   void modperl_startup(server_rec *s, ap_pool_t *p)
   {
  +MP_dSCFG(s);
   PerlInterpreter *perl;
   int status;
  -char *argv[] = { "httpd", "/dev/null" };
  -int argc = 2;
  +char **argv;
  +int argc;
   
   #ifdef MP_USE_GTOP
  -MP_dSCFG(s);
   MP_TRACE_m_do(
   scfg-gtop = modperl_gtop_new(p);
   modperl_gtop_do_proc_mem_before(MP_FUNC ": perl_parse");
  @@ -21,8 +21,10 @@
   }
   
   perl_construct(perl);
  -
  -status = perl_parse(perl, NULL, argc, argv, NULL);
  +
  +argv = modperl_srv_config_argv_init(scfg, argc);
  +
  +status = perl_parse(perl, xs_init, argc, argv, NULL);
   
   if (status) {
   perror("perl_parse");
  @@ -63,6 +65,7 @@
   }
   
   static command_rec modperl_cmds[] = {  
  +MP_SRV_CMD_ITERATE("PerlSwitches", switches, "Perl Switches"),
   #ifdef MP_TRACE
   MP_SRV_CMD_TAKE1("PerlTrace", trace, "Trace level"),
   #endif
  
  
  
  1.8   +1 -0  modperl-2.0/src/modules/perl/mod_perl.h
  
  Index: mod_perl.h
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.h,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- mod_perl.h2000/04/17 07:10:55 1.7
  +++ mod_perl.h2000/04/17 21:11:06 1.8
  @@ -38,5 +38,6 @@
   #include "modperl_directives.h"
   
   void modperl_init(server_rec *s, ap_pool_t *p);
  +void xs_init(pTHXo);
   
   #endif /*  MOD_PERL_H */
  
  
  
  1.5   +52 -1 modperl-2.0/src/modules/perl/modperl_config.c
  
  Index: modperl_config.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_config.c,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- modperl_config.c  2000/04/16 01:33:56 1.4
  +++ modperl_config.c  2000/04/17 21:11:06 1.5
  @@ -10,10 +10,42 @@
   return NULL;
   }
   
  +#define scfg_push_argv(arg) \
  +*(char **)ap_push_array(scfg-argv) = arg
  +
   modperl_srv_config_t *modperl_srv_config_new(ap_pool_t *p)
   {
  -return (modperl_srv_config_t *)
  +modperl_srv_config_t *scfg = (modperl_srv_config_t *)
   ap_pcalloc(p, sizeof(modperl_srv_config_t));
  +
  +scfg-argv = ap_make_array(p, 2, sizeof(char *));
  +
  +scfg_push_argv("httpd");
  +
  +return scfg;
  +}
  +
  +#ifdef MP_TRACE
  +static void dump_argv(modperl_srv_config_t *scfg)
  +{
  +int i;
  +char **argv = (char **)scfg-argv-elts;
  +fprintf(stderr, "modperl_srv_config_argv_init =\n");
  +for (i=0; iscfg-argv-nelts; i++) {
  +fprintf(stderr, "   %d = %s\n", i, argv[i]);
  +}
  +}
  +#endif
  +
  +char **modperl_srv_config_argv_init(modperl_srv_config_t *scfg, int *argc)
  +{
  +scfg_push_argv("-e;0");
  +
  +*argc = scfg-argv-nelts;
  +
  +MP_TRACE_g_do(dump_argv(scfg));
  +
  +return (char **)scfg-argv-elts;
   }
   
   void *modperl_create_srv_config(ap_pool_t *p, server_rec *s)
  @@ -56,9 +88,28 @@
   #define MP_CONFIG_BOOTSTRAP(parms) \
   if (!scfg-mip) modperl_init(parms-server, parms-pool)
   
  +#define MP_SRV_CMD_TRACE \
  +MP_TRACE_d(MP_FUNC, "%s %s\n", parms-cmd-name, arg)
  +
  +#define MP_SRV_CMD_CHECK \
 

cvs commit: modperl-2.0/src/modules/perl mod_perl.c modperl_config.c modperl_config.h modperl_interp.c modperl_interp.h modperl_types.h

2000-04-15 Thread dougm

dougm   00/04/15 18:33:57

  Modified:src/modules/perl mod_perl.c modperl_config.c
modperl_config.h modperl_interp.c modperl_interp.h
modperl_types.h
  Log:
  interpreter pool is only useful #ifdef USE_ITHREADS
  
  Revision  ChangesPath
  1.6   +3 -6  modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- mod_perl.c2000/04/16 00:35:32 1.5
  +++ mod_perl.c2000/04/16 01:33:56 1.6
  @@ -23,7 +23,7 @@
   
   perl_run(perl);
   
  -modperl_interp_pool_init(s, p, perl);
  +modperl_interp_init(s, p, perl);
   }
   
   void modperl_init(server_rec *s, ap_pool_t *p)
  @@ -46,17 +46,13 @@
   {
   /* XXX: should be pre_config hook or 1.xx logic */
   ap_hook_open_logs(modperl_hook_init, NULL, NULL, HOOK_MIDDLE);
  -
  -/* XXX: should only bother selecting an interpreter
  - * if one is needed for the request
  - */
  -ap_hook_post_read_request(modperl_interp_select, NULL, NULL, HOOK_FIRST);
   }
   
   static command_rec modperl_cmds[] = {  
   #ifdef MP_TRACE
   MP_SRV_CMD_TAKE1("PerlTrace", trace, "Trace level"),
   #endif
  +#ifdef USE_ITHREADS
   MP_SRV_CMD_TAKE1("PerlInterpStart", interp_start,
"Number of Perl interpreters to start"),
   MP_SRV_CMD_TAKE1("PerlInterpMax", interp_max,
  @@ -65,6 +61,7 @@
"Max number of spare Perl interpreters"),
   MP_SRV_CMD_TAKE1("PerlInterpMinSpare", interp_min_spare,
"Min number of spare Perl interpreters"),
  +#endif
   { NULL }, 
   }; 
   
  
  
  
  1.4   +11 -2 modperl-2.0/src/modules/perl/modperl_config.c
  
  Index: modperl_config.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_config.c,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- modperl_config.c  2000/04/16 00:53:33 1.3
  +++ modperl_config.c  2000/04/16 01:33:56 1.4
  @@ -19,6 +19,8 @@
   void *modperl_create_srv_config(ap_pool_t *p, server_rec *s)
   {
   modperl_srv_config_t *scfg = modperl_srv_config_new(p);
  +
  +#ifdef USE_ITHREADS
   scfg-interp_pool_cfg = 
   (modperl_interp_pool_config_t *)
   ap_pcalloc(p, sizeof(*scfg-interp_pool_cfg));
  @@ -29,6 +31,8 @@
   scfg-interp_pool_cfg-min_spare = 3;
   scfg-interp_pool_cfg-max = 5;
   
  +#endif /* USE_ITHREADS */
  +
   return scfg;
   }
   
  @@ -37,14 +41,16 @@
   
   void *modperl_merge_srv_config(ap_pool_t *p, void *basev, void *addv)
   {
  +#if 0
   modperl_srv_config_t
   *base = (modperl_srv_config_t *)basev,
   *add  = (modperl_srv_config_t *)addv,
   *mrg  = modperl_srv_config_new(p);
   
  -merge_item(mip);
  -
   return mrg;
  +#else
  +return basev;
  +#endif
   }
   
   #define MP_CONFIG_BOOTSTRAP(parms) \
  @@ -56,6 +62,7 @@
   return NULL;
   }
   
  +#ifdef USE_ITHREADS
   
   #define MP_IMP_INTERP_POOL_CFG(item) \
   const char *modperl_cmd_interp_##item(cmd_parms *parms, \
  @@ -74,3 +81,5 @@
   MP_IMP_INTERP_POOL_CFG(max);
   MP_IMP_INTERP_POOL_CFG(max_spare);
   MP_IMP_INTERP_POOL_CFG(min_spare);
  +
  +#endif /* USE_ITHREADS */
  
  
  
  1.5   +2 -0  modperl-2.0/src/modules/perl/modperl_config.h
  
  Index: modperl_config.h
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_config.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- modperl_config.h  2000/04/16 00:35:32 1.4
  +++ modperl_config.h  2000/04/16 01:33:56 1.5
  @@ -18,10 +18,12 @@
  void *dummy, char *arg)
   MP_DECLARE_SRV_CMD(trace);
   
  +#ifdef USE_ITHREADS
   MP_DECLARE_SRV_CMD(interp_start);
   MP_DECLARE_SRV_CMD(interp_max);
   MP_DECLARE_SRV_CMD(interp_max_spare);
   MP_DECLARE_SRV_CMD(interp_min_spare);
  +#endif
   
   #define MP_SRV_CMD_TAKE1(name, item, desc) \
   { name, modperl_cmd_##item, NULL, \
  
  
  
  1.6   +26 -4 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.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- modperl_interp.c  2000/04/16 00:35:32 1.5
  +++ modperl_interp.c  2000/04/16 01:33:56 1.6
  @@ -5,6 +5,8 @@
* but it will do for proof-of-concept
*/
   
  +#ifdef USE_ITHREADS
  +
   modperl_interp_t *modperl_interp_new(ap_pool_t *p,
modperl_interp_pool_t *mip,