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