cvs commit: modperl-2.0 STATUS

2002-06-20 Thread stas

stas2002/06/20 11:31:16

  Modified:.STATUS
  Log:
  log the Apache::Log issues for a future resolution
  
  Revision  ChangesPath
  1.4   +43 -7 modperl-2.0/STATUS
  
  Index: STATUS
  ===
  RCS file: /home/cvs/modperl-2.0/STATUS,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- STATUS4 Jun 2002 13:01:20 -   1.3
  +++ STATUS20 Jun 2002 18:31:16 -  1.4
  @@ -4,9 +4,10 @@
   Release:
   
   
  -   1.99_03-dev: In development
  -   1.99_02-dev: Released June 01, 2002
  -   1.99_01: Released April 06, 2002
  +   1.99_04-dev: In development
  +   1.99_03-dev: Released Jun 16, 2002
  +   1.99_02-dev: Released Jun 01, 2002
  +   1.99_01: Released Apr 06, 2002
   
   
  ===
  @@ -28,6 +29,15 @@
   Available Patches:
   --
   
  +* Fixing Apache-warn(foo)
  +  Report: Message-ID: [EMAIL PROTECTED]
  +  Status: pending Apache::Log compat issues, this and other methods
  +  might be dropped.
  +
  +
  +* 
  +  Report: 
  +  Status: 
   
   Needs Patch or Further Investigation:
   -
  @@ -36,6 +46,32 @@
   Open Issues or Core Enhancements:
   -
   
  +* Apache::Log compat issues:
  +
  +  Apache-warn, Apache::warn, Apache::Server-warn and
  +  Apache-Apache::Server-log_error are all doing:
  + s = modperl_global_get_server_rec();
  +  and this function is thread safe only during the startup.
  +
  +  possible solutions:
  +
  +  1) enforce that these functions are used only at the server startup
  +
  +  2) require +GlobalRequest, which gives us r-server, now thread
  + safe (though slow).
  +
  +  3) drop them all from the API and move to compat. 
  + [remember that Apache::warn is needed for registry scripts to
  + override warn()]
  +
  +  Report: Message-ID: [EMAIL PROTECTED]
  +  Status: img alt=Doug, contemplating
  +
  +
  +
  +* 
  +  Report: 
  +  Status: 
   
   Documentation:
   --
  @@ -44,7 +80,7 @@
   Patches unlikely to be applied:
   ---
   
  - * 
  -   Report: 
  -   Status: 
  +* 
  +  Report: 
  +  Status: 
   
  
  
  



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

2002-06-20 Thread dougm

dougm   2002/06/20 17:05:17

  Added:   src/modules/perl modperl_sys.c modperl_sys.h
  Log:
  rolling our own modperl_sys_dlclose() to avoid apr/pool overhead/thread issues
  
  Revision  ChangesPath
  1.1  modperl-2.0/src/modules/perl/modperl_sys.c
  
  Index: modperl_sys.c
  ===
  #include mod_perl.h
  
  /*
   * Perl does not provide this abstraction.
   * APR does, but requires a pool.  efforts to expose this area of apr
   * failed.  so we roll our own.  *sigh*
   */
  int modperl_sys_dlclose(void *handle)
  {
  #if defined(MP_SYS_DL_DLOPEN)
  #ifdef I_DLFCN
  #include dlfcn.h
  #else
  #include nlist.h
  #include link.h
  #endif
  return dlclose(handle) == 0;
  #elif defined(MP_SYS_DL_DYLD)
  return NSUnlinkModule(handle, FALSE);
  #elif defined(MP_SYS_DL_HPUX)
  shl_unload((shl_t)handle);
  return 1;
  #elif defined(MP_SYS_DL_WIN32)
  return FreeLibrary(handle);
  #elif defined(MP_SYS_DL_BEOS)
  return unload_add_on(handle)  B_NO_ERROR;
  #elif defined(MP_SYS_DL_DLLLOAD)
  return dllfree(handle) == 0;
  #elif defined(MP_SYS_DL_AIX)
  return dlclose(handle) == 0;
  #else
  #error modperl_sys_dlclose not defined on this platform
  return 0;
  #endif
  }
  
  
  
  1.1  modperl-2.0/src/modules/perl/modperl_sys.h
  
  Index: modperl_sys.h
  ===
  #ifndef MODPERL_SYS_H
  #define MODPERL_SYS_H
  
  /*
   * system specific type stuff.
   * hopefully won't be much here since Perl/APR/Apache
   * take care of most portablity issues.
   */
  int modperl_sys_dlclose(void *handle);
  
  #endif /* MODPERL_SYS_H */
  
  
  



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

2002-06-20 Thread dougm

dougm   2002/06/20 17:05:49

  Modified:lib/ModPerl Code.pm
   src/modules/perl mod_perl.h
  Log:
  integrate modperl_sys modules
  
  Revision  ChangesPath
  1.83  +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.82
  retrieving revision 1.83
  diff -u -r1.82 -r1.83
  --- Code.pm   16 Jun 2002 01:09:46 -  1.82
  +++ Code.pm   21 Jun 2002 00:05:49 -  1.83
   -2,6 +2,7 
   
   use strict;
   use warnings FATAL = 'all';
  +use Config;
   use mod_perl ();
   use Apache::Build ();
   
   -346,6 +347,10 
   
   my $n = 1;
   
  +(my $dlsrc = uc $Config{dlsrc}) =~ s/\.xs$//i;
  +
  +print $h_fh \n#define MP_SYS_$dlsrc 1\n;
  +
   while (my($class, $opts) = each %{ $self-{flags} }) {
   my $i = 0;
   my lookup = ();
   -563,7 +568,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_global perl_pp);
  + perl perl_global perl_pp sys);
   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.48  +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.47
  retrieving revision 1.48
  diff -u -r1.47 -r1.48
  --- mod_perl.h19 Jun 2002 05:18:04 -  1.47
  +++ mod_perl.h21 Jun 2002 00:05:49 -  1.48
   -18,6 +18,7 
   #include modperl_hooks.h
   #include modperl_perl_global.h
   #include modperl_perl_pp.h
  +#include modperl_sys.h
   
   /* both perl and apr have largefile support enabled */
   #define MP_LARGE_FILES_ENABLED \
  
  
  



cvs commit: modperl-2.0/xs/tables/current/ModPerl FunctionTable.pm

2002-06-20 Thread dougm

dougm   2002/06/20 17:07:25

  Modified:xs/tables/current/ModPerl FunctionTable.pm
  Log:
  sync
  
  Revision  ChangesPath
  1.73  +11 -1 modperl-2.0/xs/tables/current/ModPerl/FunctionTable.pm
  
  Index: FunctionTable.pm
  ===
  RCS file: /home/cvs/modperl-2.0/xs/tables/current/ModPerl/FunctionTable.pm,v
  retrieving revision 1.72
  retrieving revision 1.73
  diff -u -r1.72 -r1.73
  --- FunctionTable.pm  16 Jun 2002 01:09:18 -  1.72
  +++ FunctionTable.pm  21 Jun 2002 00:07:24 -  1.73
   -2,7 +2,7 
   
   # !!
   # ! WARNING: generated by ModPerl::ParseSource/0.01
  -# !  Sat Jun 15 17:57:19 2002
  +# !  Thu Jun 20 16:54:53 2002
   # !  do NOT edit, any changes will be lost !
   # !!
   
   -3581,6 +3581,16 
 {
   'type' = 'SV *',
   'name' = 'sv'
  +  }
  +]
  +  },
  +  {
  +'return_type' = 'int',
  +'name' = 'modperl_sys_dlclose',
  +'args' = [
  +  {
  +'type' = 'void *',
  +'name' = 'handle'
 }
   ]
 },
  
  
  



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 modperl_sys.c

2002-06-20 Thread dougm

dougm   2002/06/20 18:32:56

  Modified:src/modules/perl modperl_sys.c
  Log:
  hpux fix
  
  Revision  ChangesPath
  1.3   +1 -0  modperl-2.0/src/modules/perl/modperl_sys.c
  
  Index: modperl_sys.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_sys.c,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- modperl_sys.c 21 Jun 2002 00:48:01 -  1.2
  +++ modperl_sys.c 21 Jun 2002 01:32:56 -  1.3
   -18,6 +18,7 
   #elif defined(MP_SYS_DL_DYLD)
   return NSUnLinkModule(handle, FALSE);
   #elif defined(MP_SYS_DL_HPUX)
  +#include dl.h
   shl_unload((shl_t)handle);
   return 1;
   #elif defined(MP_SYS_DL_WIN32)
  
  
  



cvs commit: modperl-2.0/xs/APR/PerlIO apr_perlio.c

2002-06-20 Thread dougm

dougm   2002/06/20 19:06:48

  Modified:xs/APR/PerlIO apr_perlio.c
  Log:
  bleedperl now has a binmode PerlIO function
  
  Revision  ChangesPath
  1.15  +1 -0  modperl-2.0/xs/APR/PerlIO/apr_perlio.c
  
  Index: apr_perlio.c
  ===
  RCS file: /home/cvs/modperl-2.0/xs/APR/PerlIO/apr_perlio.c,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- apr_perlio.c  31 May 2002 15:41:40 -  1.14
  +++ apr_perlio.c  21 Jun 2002 02:06:48 -  1.15
   -321,6 +321,7 
   PerlIOBase_pushed,
   PerlIOAPR_popped,
   PerlIOAPR_open,
  +NULL,   /* XXX: binmode? */
   NULL,  /* no getarg needed */
   PerlIOAPR_fileno,
   PerlIOAPR_dup,
  
  
  



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

2002-06-20 Thread dougm

dougm   2002/06/20 20:02:54

  Modified:src/modules/perl modperl_interp.c modperl_interp.h
modperl_tipool.c modperl_tipool.h modperl_types.h
  Log:
  stop using an apr_pool_t to allocate items for the interpreter pool:
  -even though we lock, the pool is read by modules other than mod_perl
  -when a PerlInterpreter is released to to PerlInterp{MaxRequests,MinSpare}
  the pool item allocation leaks because the server pool is not
  cleared until restart
  
  Revision  ChangesPath
  1.48  +9 -7  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.47
  retrieving revision 1.48
  diff -u -r1.47 -r1.48
  --- modperl_interp.c  21 Jun 2002 00:44:24 -  1.47
  +++ modperl_interp.c  21 Jun 2002 03:02:54 -  1.48
   -35,14 +35,15 
   modperl_xs_dl_handles_clear(aTHX);
   }
   
  -modperl_interp_t *modperl_interp_new(apr_pool_t *p,
  - modperl_interp_pool_t *mip,
  +modperl_interp_t *modperl_interp_new(modperl_interp_pool_t *mip,
PerlInterpreter *perl)
   {
   UV clone_flags = 0;
   modperl_interp_t *interp = 
  -(modperl_interp_t *)apr_pcalloc(p, sizeof(*interp));
  -
  +(modperl_interp_t *)malloc(sizeof(*interp));
  +
  +memset(interp, '\0', sizeof(*interp));
  +
   interp-mip = mip;
   interp-refcnt = 0; /* for use by APR::Pool-cleanup_register */
   
   -97,6 +98,8 
   modperl_perl_destruct(interp-perl);
   
   modperl_xs_dl_handles_close(handles);
  +
  +free(interp);
   }
   
   apr_status_t modperl_interp_cleanup(void *data)
   -162,7 +165,7 
   {
   modperl_interp_pool_t *mip = (modperl_interp_pool_t *)data;
   MP_TRACE_i(MP_FUNC, adding new interpreter to the pool\n);
  -return (void *)modperl_interp_new(mip-ap_pool, mip, mip-parent-perl);
  +return (void *)modperl_interp_new(mip, mip-parent-perl);
   }
   
   static void interp_pool_shrink(modperl_tipool_t *tipool, void *data,
   -206,9 +209,8 
  interp_pool_func, mip);
   
   mip-tipool = tipool;
  -mip-ap_pool = p;
   mip-server  = s;
  -mip-parent = modperl_interp_new(p, mip, NULL);
  +mip-parent = modperl_interp_new(mip, NULL);
   aTHX = mip-parent-perl = perl;
   
   /* this happens post-config in mod_perl.c:modperl_init_clones() */
  
  
  
  1.16  +1 -2  modperl-2.0/src/modules/perl/modperl_interp.h
  
  Index: modperl_interp.h
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_interp.h,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- modperl_interp.h  13 Jun 2002 02:59:05 -  1.15
  +++ modperl_interp.h  21 Jun 2002 03:02:54 -  1.16
   -23,8 +23,7 
   
   void modperl_interp_clone_init(modperl_interp_t *interp);
   
  -modperl_interp_t *modperl_interp_new(apr_pool_t *p,
  - modperl_interp_pool_t *mip,
  +modperl_interp_t *modperl_interp_new(modperl_interp_pool_t *mip,
PerlInterpreter *perl);
   
   void modperl_interp_destroy(modperl_interp_t *interp);
  
  
  
  1.8   +6 -4  modperl-2.0/src/modules/perl/modperl_tipool.c
  
  Index: modperl_tipool.c
  ===
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_tipool.c,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- modperl_tipool.c  8 Mar 2002 02:48:01 -   1.7
  +++ modperl_tipool.c  21 Jun 2002 03:02:54 -  1.8
   -15,10 +15,11 
* this is another proof-of-concept, plenty of room for improvement here
*/
   
  -modperl_list_t *modperl_list_new(apr_pool_t *p)
  +modperl_list_t *modperl_list_new()
   {
   modperl_list_t *listp = 
  -(modperl_list_t *)apr_pcalloc(p, sizeof(*listp));
  +(modperl_list_t *)malloc(sizeof(*listp));
  +memset(listp, '\0', sizeof(*listp));
   return listp;
   }
   
   -151,7 +152,6 
   modperl_tipool_t *tipool =
   (modperl_tipool_t *)apr_pcalloc(p, sizeof(*tipool));
   
  -tipool-ap_pool = p;
   tipool-cfg = cfg;
   tipool-func = func;
   tipool-data = data;
   -201,7 +201,7 
   
   void modperl_tipool_add(modperl_tipool_t *tipool, void *data)
   {
  -modperl_list_t *listp = modperl_list_new(tipool-ap_pool);
  +modperl_list_t *listp = modperl_list_new();
   
   listp-data = data;
   
   -339,6 +339,8 
   (*tipool-func-tipool_destroy)(tipool, tipool-data,
   listp-data);
   }
  +
  +free(listp); /* gone for good */
   
   if (max_requests  

cvs commit: modperl-2.0/xs/tables/current/ModPerl FunctionTable.pm

2002-06-20 Thread dougm

dougm   2002/06/20 20:04:36

  Modified:xs/tables/current/ModPerl FunctionTable.pm
  Log:
  sync
  
  Revision  ChangesPath
  1.74  +4 -21 modperl-2.0/xs/tables/current/ModPerl/FunctionTable.pm
  
  Index: FunctionTable.pm
  ===
  RCS file: /home/cvs/modperl-2.0/xs/tables/current/ModPerl/FunctionTable.pm,v
  retrieving revision 1.73
  retrieving revision 1.74
  diff -u -r1.73 -r1.74
  --- FunctionTable.pm  21 Jun 2002 00:07:24 -  1.73
  +++ FunctionTable.pm  21 Jun 2002 03:04:36 -  1.74
   -2,7 +2,7 
   
   # !!
   # ! WARNING: generated by ModPerl::ParseSource/0.01
  -# !  Thu Jun 20 16:54:53 2002
  +# !  Thu Jun 20 19:51:30 2002
   # !  do NOT edit, any changes will be lost !
   # !!
   
   -2275,10 +2275,6 
   'name' = 'modperl_interp_new',
   'args' = [
 {
  -'type' = 'apr_pool_t *',
  -'name' = 'p'
  -  },
  -  {
   'type' = 'modperl_interp_pool_t *',
   'name' = 'mip'
 },
   -2470,12 +2466,7 
 {
   'return_type' = 'modperl_list_t *',
   'name' = 'modperl_list_new',
  -'args' = [
  -  {
  -'type' = 'apr_pool_t *',
  -'name' = 'p'
  -  }
  -]
  +'args' = []
 },
 {
   'return_type' = 'modperl_list_t *',
   -3975,26 +3966,18 
   'name' = 'modperl_xs_dl_handles_close',
   'args' = [
 {
  -'type' = 'apr_pool_t *',
  -'name' = 'p'
  -  },
  -  {
  -'type' = 'apr_array_header_t *',
  +'type' = 'void **',
   'name' = 'handles'
 }
   ]
 },
 {
  -'return_type' = 'apr_array_header_t *',
  +'return_type' = 'void **',
   'name' = 'modperl_xs_dl_handles_get',
   'args' = [
 {
   'type' = 'PerlInterpreter *',
   'name' = 'my_perl'
  -  },
  -  {
  -'type' = 'apr_pool_t *',
  -'name' = 'p'
 }
   ]
 },
  
  
  



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

2002-06-20 Thread dougm

dougm   2002/06/20 20:46:46

  Modified:src/modules/perl modperl_interp.c
  Log:
  cannot dereference mip-parent after it has been free-d
  
  Revision  ChangesPath
  1.49  +0 -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.48
  retrieving revision 1.49
  diff -u -r1.48 -r1.49
  --- modperl_interp.c  21 Jun 2002 03:02:54 -  1.48
  +++ modperl_interp.c  21 Jun 2002 03:46:46 -  1.49
   -152,8 +152,6 
   modperl_interp_destroy(mip-parent);
   }
   
  -mip-parent-perl = NULL;
  -
   modperl_env_unload();
   
   modperl_perl_pp_unset_all();
  
  
  



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