You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by tr...@apache.org on 2003/11/07 16:26:34 UTC

cvs commit: httpd-2.0/modules/generators mod_cgid.c

trawick     2003/11/07 07:26:34

  Modified:    .        CHANGES
               modules/generators mod_cgid.c
  Log:
  Fix a long delay with CGI requests and keepalive connections on
  AIX.
  
  On AIX, for processes like mod_cgid's script children where
  SIGCHLD is ignored, kill(pid,0) returns success for up to
  one second after the script child exits, based on when a
  daemon runs to clean up unnecessary process table entries.
  getpgid() can report the proper info (-1/ESRCH) immediately.
  
  One user had a page with a lot of embedded images created by
  CGIs, and the browser fetched them on a keepalive connection,
  and the cumulative delays were very noticeable by the clients.
  
  Revision  Changes    Path
  1.1313    +3 -0      httpd-2.0/CHANGES
  
  Index: CHANGES
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/CHANGES,v
  retrieving revision 1.1312
  retrieving revision 1.1313
  diff -u -r1.1312 -r1.1313
  --- CHANGES	7 Nov 2003 13:40:04 -0000	1.1312
  +++ CHANGES	7 Nov 2003 15:26:34 -0000	1.1313
  @@ -2,6 +2,9 @@
   
     [Remove entries to the current 2.0 section below, when backported]
   
  +  *) Fix a long delay with CGI requests and keepalive connections on
  +     AIX.  [Jeff Trawick]
  +
     *) Fix uninitialized gprof directory name in prefork MPM.  PR 24450.
        [Chris Knight <Ch...@nasa.gov>]
   
  
  
  
  1.159     +10 -0     httpd-2.0/modules/generators/mod_cgid.c
  
  Index: mod_cgid.c
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/modules/generators/mod_cgid.c,v
  retrieving revision 1.158
  retrieving revision 1.159
  diff -u -r1.158 -r1.159
  --- mod_cgid.c	26 Oct 2003 23:25:44 -0000	1.158
  +++ mod_cgid.c	7 Nov 2003 15:26:34 -0000	1.159
  @@ -1187,7 +1187,17 @@
       apr_interval_time_t total = 0;
   
       do {
  +#ifdef _AIX
  +        /* On AIX, for processes like mod_cgid's script children where
  +         * SIGCHLD is ignored, kill(pid,0) returns success for up to
  +         * one second after the script child exits, based on when a
  +         * daemon runs to clean up unnecessary process table entries.
  +         * getpgid() can report the proper info (-1/ESRCH) immediately.
  +         */
  +        if (getpgid(pid) < 0) {
  +#else
           if (kill(pid, 0) < 0) {
  +#endif
               return APR_SUCCESS;
           }
           apr_sleep(interval);
  
  
  

Re: cvs commit: httpd-2.0/modules/generators mod_cgid.c

Posted by Jeff Trawick <tr...@attglobal.net>.
trawick@apache.org wrote:

>   +#ifdef _AIX

see related thread "[PATCH] apr function to see if an arbitrary process is 
alive" on dev@apr