stas        2003/10/18 14:01:31

  Modified:    src/modules/perl mod_perl.c modperl_perl.c modperl_perl.h
               .        Changes
  Log:
  perl 5.8.1 w/ ithreads has a bug where it reports the wrong parent pid
  (as if the process was never forked), provide a local workaround (+ new
  test).
    - revert my previous fix
    - replace with Rafael's fix, which does it in the right place
  
  Revision  Changes    Path
  1.192     +0 -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.191
  retrieving revision 1.192
  diff -u -u -r1.191 -r1.192
  --- mod_perl.c        17 Oct 2003 17:17:06 -0000      1.191
  +++ mod_perl.c        18 Oct 2003 21:01:30 -0000      1.192
  @@ -695,15 +695,6 @@
   {
       modperl_perl_init_ids_server(s);
   
  -#if PERL_REVISION == 5 && PERL_VERSION == 8 && PERL_SUBVERSION == 1 && \
  -    defined(THREADS_HAVE_PIDS) 
  -    {
  -        MP_dSCFG(s);
  -        dTHXa(scfg->mip->parent->perl);
  -        PL_ppid = (IV)getppid();
  -    }
  -#endif     
  -    
       apr_pool_cleanup_register(p, (void *)s, modperl_child_exit,
                                 apr_pool_cleanup_null);
   }
  
  
  
  1.19      +15 -1     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.18
  retrieving revision 1.19
  diff -u -u -r1.18 -r1.19
  --- modperl_perl.c    28 Aug 2002 03:16:20 -0000      1.18
  +++ modperl_perl.c    18 Oct 2003 21:01:30 -0000      1.19
  @@ -33,6 +33,9 @@
   static void modperl_perl_ids_get(modperl_perl_ids_t *ids)
   {
       ids->pid  = (I32)getpid();
  +#ifdef MP_MAINTAIN_PPID
  +    ids->ppid = (I32)getppid();
  +#endif
   #ifndef WIN32
       ids->uid  = getuid();
       ids->euid = geteuid(); 
  @@ -40,10 +43,18 @@
       ids->gid  = getegid(); 
   
       MP_TRACE_g(MP_FUNC, 
  +               "pid=%d, "
  +#ifdef MP_MAINTAIN_PPID
  +               "ppid=%d, "
  +#endif
                  "uid=%d, euid=%d, gid=%d, egid=%d\n",
  +               (int)ids->pid,
  +#ifdef MP_MAINTAIN_PPID
  +               (int)ids->ppid,
  +#endif
                  (int)ids->uid, (int)ids->euid,
                  (int)ids->gid, (int)ids->egid);
  -#endif
  +#endif /* #ifndef WIN32 */
   }
   
   static void modperl_perl_init_ids(pTHX_ modperl_perl_ids_t *ids)
  @@ -55,6 +66,9 @@
       PL_euid = ids->euid;
       PL_gid  = ids->gid;
       PL_egid = ids->egid;
  +#endif
  +#ifdef MP_MAINTAIN_PPID
  +    PL_ppid = ids->ppid;
   #endif
   }
   
  
  
  
  1.11      +9 -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.10
  retrieving revision 1.11
  diff -u -u -r1.10 -r1.11
  --- modperl_perl.h    28 Aug 2002 03:16:20 -0000      1.10
  +++ modperl_perl.h    18 Oct 2003 21:01:30 -0000      1.11
  @@ -1,10 +1,19 @@
   #ifndef MODPERL_PERL_H
   #define MODPERL_PERL_H
   
  +#if PERL_REVISION == 5 && \
  +    (PERL_VERSION == 8 && PERL_SUBVERSION >= 1 || PERL_VERSION >= 9) && \
  +    THREADS_HAVE_PIDS
  +#define MP_MAINTAIN_PPID
  +#endif
  +
   typedef struct {
       I32 pid;
       Uid_t uid, euid;
       Gid_t gid, egid;
  +#ifdef MP_MAINTAIN_PPID
  +    Uid_t ppid;
  +#endif
   } modperl_perl_ids_t;
   
   void modperl_perl_core_global_init(pTHX);
  
  
  
  1.240     +2 -2      modperl-2.0/Changes
  
  Index: Changes
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/Changes,v
  retrieving revision 1.239
  retrieving revision 1.240
  diff -u -u -r1.239 -r1.240
  --- Changes   18 Oct 2003 20:58:27 -0000      1.239
  +++ Changes   18 Oct 2003 21:01:30 -0000      1.240
  @@ -13,8 +13,8 @@
   =item 1.99_11-dev - 
   
   perl 5.8.1 w/ ithreads has a bug where it reports the wrong parent pid
  -(as the process was never forked), provide a local workaround (+ new
  -test). [Stas]
  +(as if the process was never forked), provide a local workaround (+ new
  +test). [Rafael Garcia-Suarez <[EMAIL PROTECTED]>]
   
   overriden STD* streams now can be further overriden and will be
   properly restored, which allows functions like $r->internal_redirect
  
  
  

Reply via email to