Hello community,
here is the log from the commit of package apache2-mod_fcgid
checked in at Thu Oct 19 13:12:52 CEST 2006.
--------
--- apache2-mod_fcgid/apache2-mod_fcgid.changes 2006-01-25 21:34:18.000000000 +0100
+++ /mounts/work_src_done/STABLE/apache2-mod_fcgid/apache2-mod_fcgid.changes 2006-10-17 17:34:10.000000000 +0200
@@ -1,0 +2,78 @@
+Tue Oct 17 17:33:51 CEST 2006 - poeml@suse.de
+
+- build the module for all MPMs, not only for prefork
+
+-------------------------------------------------------------------
+Wed Aug 30 14:43:15 CEST 2006 - mrueckert@suse.de
+
+- Fix the php example in the config
+
+-------------------------------------------------------------------
+Wed Aug 30 14:37:40 CEST 2006 - mrueckert@suse.de
+
+- mark sample conf file file as config(noreplace)
+
+-------------------------------------------------------------------
+Wed Aug 30 14:25:21 CEST 2006 - mrueckert@suse.de
+
+- minor typo fix for the sample config
+
+-------------------------------------------------------------------
+Wed Aug 30 03:06:11 CEST 2006 - mrueckert@suse.de
+
+- Update to 1.10:
+ o Use poll() instead of select() in UNIX. "It becomes problematic
+ on apache2 with large number of logfiles. Apache2 calls poll()
+ (when OS supports it), and in that case it doesn't need to be
+ recompiled with larger FD_SETSIZE. select() is still limited
+ to FD_SETSIZE."
+ Thank Piotr Gackiewicz gacek at intertele.pl for the patch.
+ o Bug fix: "Some requests fail with HTTP 500 and no errorlog
+ entry is generated"
+ Thank Piotr Gackiewicz gacek at intertele.pl for the patch.
+ o Use anonymouse share memeory to make OS X happy.
+ Thank andkjar at obtech.net for the patch.
+ o Add config.m4, mod_fcgid now can be static linked in
+ httpd (See INSTALL.txt)
+
+-------------------------------------------------------------------
+Sun Jun 18 10:45:21 CEST 2006 - mrueckert@suse.de
+
+- Update to 1.09:
+ o Add configuration DefaultMinClassProcessCount(default 3).
+ Idle fastcgi will not be killed if their count less than
+ DefaultMinClassProcessCount.
+ (Thank Finn Smith, finn at timeghost.net for suggestion)
+ o Add configuration PHP_Fix_Pathinfo_Enable(default 0). If
+ you are using PHP and set cgi.fix_pathinfo=1 in php.ini,
+ please add "PHP_Fix_Pathinfo_Enable 1" in httpd.conf.
+ (Thank Florian Munz, flo at myhosting.de for bug report)
+ o Split error log whle '\r' or '\n' are inside the text send
+ to "stderr". (Thank frederic at jolliton.com for the patch)
+ Additionally from 1.08:
+ o apr_bucket_copy() does not work with buckets from mod_ssl,
+ use apr_bucket_heap_create() instead
+ o Wrapper binary can be stored in a different location to the
+ web content (like /usr/local/apache2/fcgi-bin)
+ o Support "\r\n\r\n " HTTP header from CGI.
+
+- removed mod_fcgid.1.07-bugfixes.patch,
+ mod_fcgid.1.07-apache2.2.0.patch:
+ changes were part of 1.08
+
+-------------------------------------------------------------------
+Mon Mar 20 19:49:08 CET 2006 - mrueckert@suse.de
+
+- added content to apache2-mod_fcgid.conf
+
+-------------------------------------------------------------------
+Mon Mar 20 19:18:40 CET 2006 - mrueckert@suse.de
+
+- added mod_fcgid.1.07-bugfixes.patch:
+ o apr_bucket_copy() does not work with buckets from mod_ssl,
+ use apr_bucket_heap_create() instead
+ o Wrapper binary can be stored in a different location to the
+ web content (like /usr/local/apache2/fcgi-bin)
+ o Support "\r\n\r\n " HTTP header from CGI.
+
+-------------------------------------------------------------------
Old:
----
mod_fcgid.1.07-apache2.2.0.patch
mod_fcgid.1.07.tar.bz2
New:
----
apache2-mod_fcgid.conf
mod_fcgid.1.10.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ apache2-mod_fcgid.spec ++++++
--- /var/tmp/diff_new_pack.yojjih/_old 2006-10-19 13:12:07.000000000 +0200
+++ /var/tmp/diff_new_pack.yojjih/_new 2006-10-19 13:12:07.000000000 +0200
@@ -1,38 +1,43 @@
#
-# spec file for package apache2-mod_fcgid (Version 1.07)
+# spec file for package apache2-mod_fcgid (Version 1.10)
#
# Copyright (c) 2006 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
# package are under the same license as the package itself.
#
-# Please submit bugfixes or comments via http://bugs.opensuse.org
+# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
# norootforbuild
Name: apache2-mod_fcgid
-BuildRequires: apache2-devel libapr-util1-devel openldap2 openldap2-devel pcre-devel python-devel
-%define apxs /usr/sbin/apxs2-prefork
+%define apxs /usr/sbin/apxs2
%define apache_libexecdir %(%{apxs} -q LIBEXECDIR)
+%define apache_sysconfdir %(%{apxs} -q SYSCONFDIR)
%define apache_mmn %(MMN=$(%{apxs} -q LIBEXECDIR)_MMN; test -x $MMN && $MMN)
-Version: 1.07
-Release: 2
+#
+Version: 1.10
+Release: 1
+#
Group: Productivity/Networking/Web/Servers
-Requires: apache2 %{apache_mmn}
-License: GPL
+License: GNU General Public License (GPL) - all versions
+#
BuildRoot: %{_tmppath}/%{name}-%{version}-build
+BuildRequires: apache2-devel
+Requires: apache2 %{apache_mmn}
Provides: apache2-mod_fastcgi
-Obsoletes: apache2-mod_fastcgi
+#
URL: http://fastcgi.coremail.cn/
# gz2bz2 from Source: http://fastcgi.coremail.cn/mod_fcgid.%{version}.tar.gz
Source: mod_fcgid.%{version}.tar.bz2
# wget --accept='.htm' -rkmp -np http://fastcgi.coremail.cn && \
# mv fastcgi.coremail.cn docs && tar cfj docs{.tar.bz2,}
Source1: docs.tar.bz2
+Source2: apache2-mod_fcgid.conf
Patch: mod_fcgid.1.07-printf_warnings.patch
Patch1: mod_fcgid.1.07-pointer_warnings.patch
-Patch2: mod_fcgid.1.07-apache2.2.0.patch
Patch3: mod_fcgid.1.07-suse_paths.patch
+#
Summary: Alternative FastCGI module for Apache2
%description
@@ -53,7 +58,6 @@
%setup -n mod_fcgid.%{version} -a 1
%patch
%patch1
-%patch2
%patch3
%build
@@ -62,6 +66,7 @@
%install
%{__install} -D -m 0755 .libs/mod_fcgid.so %{buildroot}%{apache_libexecdir}/mod_fcgid.so
+%{__install} -D -m 0644 %{S:2} %{buildroot}%{apache_sysconfdir}/conf.d/mod_fcgid.conf
%clean
%{__rm} -rf %{buildroot}
@@ -69,9 +74,63 @@
%files
%defattr(-,root,root)
%{apache_libexecdir}/mod_fcgid.so
+%config(noreplace) %{apache_sysconfdir}/conf.d/mod_fcgid.conf
%doc INSTALL.txt ChangeLog docs/*
%changelog -n apache2-mod_fcgid
+* Tue Oct 17 2006 - poeml@suse.de
+- build the module for all MPMs, not only for prefork
+* Wed Aug 30 2006 - mrueckert@suse.de
+- Fix the php example in the config
+* Wed Aug 30 2006 - mrueckert@suse.de
+- mark sample conf file file as config(noreplace)
+* Wed Aug 30 2006 - mrueckert@suse.de
+- minor typo fix for the sample config
+* Wed Aug 30 2006 - mrueckert@suse.de
+- Update to 1.10:
+ o Use poll() instead of select() in UNIX. "It becomes problematic
+ on apache2 with large number of logfiles. Apache2 calls poll()
+ (when OS supports it), and in that case it doesn't need to be
+ recompiled with larger FD_SETSIZE. select() is still limited
+ to FD_SETSIZE."
+ Thank Piotr Gackiewicz gacek at intertele.pl for the patch.
+ o Bug fix: "Some requests fail with HTTP 500 and no errorlog
+ entry is generated"
+ Thank Piotr Gackiewicz gacek at intertele.pl for the patch.
+ o Use anonymouse share memeory to make OS X happy.
+ Thank andkjar at obtech.net for the patch.
+ o Add config.m4, mod_fcgid now can be static linked in
+ httpd (See INSTALL.txt)
+* Sun Jun 18 2006 - mrueckert@suse.de
+- Update to 1.09:
+ o Add configuration DefaultMinClassProcessCount(default 3).
+ Idle fastcgi will not be killed if their count less than
+ DefaultMinClassProcessCount.
+ (Thank Finn Smith, finn at timeghost.net for suggestion)
+ o Add configuration PHP_Fix_Pathinfo_Enable(default 0). If
+ you are using PHP and set cgi.fix_pathinfo=1 in php.ini,
+ please add "PHP_Fix_Pathinfo_Enable 1" in httpd.conf.
+ (Thank Florian Munz, flo at myhosting.de for bug report)
+ o Split error log whle '\r' or '\n' are inside the text send
+ to "stderr". (Thank frederic at jolliton.com for the patch)
+ Additionally from 1.08:
+ o apr_bucket_copy() does not work with buckets from mod_ssl,
+ use apr_bucket_heap_create() instead
+ o Wrapper binary can be stored in a different location to the
+ web content (like /usr/local/apache2/fcgi-bin)
+ o Support "\r\n\r\n " HTTP header from CGI.
+- removed mod_fcgid.1.07-bugfixes.patch,
+ mod_fcgid.1.07-apache2.2.0.patch:
+ changes were part of 1.08
+* Mon Mar 20 2006 - mrueckert@suse.de
+- added content to apache2-mod_fcgid.conf
+* Mon Mar 20 2006 - mrueckert@suse.de
+- added mod_fcgid.1.07-bugfixes.patch:
+ o apr_bucket_copy() does not work with buckets from mod_ssl,
+ use apr_bucket_heap_create() instead
+ o Wrapper binary can be stored in a different location to the
+ web content (like /usr/local/apache2/fcgi-bin)
+ o Support "\r\n\r\n " HTTP header from CGI.
* Wed Jan 25 2006 - mls@suse.de
- converted neededforbuild to BuildRequires
* Tue Jan 17 2006 - mrueckert@suse.de
++++++ docs.tar.bz2 ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/docs/doc.htm new/docs/doc.htm
--- old/docs/doc.htm 2005-12-13 00:15:10.000000000 +0100
+++ new/docs/doc.htm 2006-08-30 02:39:53.000000000 +0200
@@ -81,13 +81,18 @@
process terminates. The higher this number is, the lower speed of spawning can
be.<p><b>MaxProcessCount n (1000)</b><p>The max count of total fastcgi process
count.<p><b>DefaultMaxClassProcessCount n (100)</b><p>The maximum number of
-fastcgi application instances allowed to run for any one fastcgi application. <p><b>DefaultInitEnv
+fastcgi application instances allowed to run for any one fastcgi application. <p><b>DefaultMinClassProcessCount n
+(3)</b><p>The minimum number of
+fastcgi application instances for any one fastcgi application. <p><b>DefaultInitEnv
env_name env_value</b><p>The default environment variables before a fastcgi
application is spawned. You can set this configuration more
-than once.<p><b>IPCConnectTimeout n (2 seconds)</b><p>The connect timeout to a
-fastcgi application.<p><b>IPCCommTimeout n (5 seconds)</b><p>The communication
-timeout to a fastcgi application.<p><b>OutputBufferSize n (64k bytes)</b><p>CGI
-output cache buffer size.
+than once.<p><b>IPCConnectTimeout n (3 seconds)</b><p>The connect timeout to a
+fastcgi application. <p><b>IPCCommTimeout n (20 seconds)</b><p>The communication
+timeout to a fastcgi application. Please increase this value if your CGI have a
+slow initialization or slow respond.<p><b>OutputBufferSize n (64k bytes)</b><p>CGI
+output cache buffer size.<p><b>PHP_Fix_Pathinfo_Enable</b><b> n(n=0/1, default 0)</b><p>If
+you are using PHP and set cgi.fix_pathinfo=1 in php.ini, set
+PHP_Fix_Pathinfo_Enable 1.
</td>
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/docs/download.htm new/docs/download.htm
--- old/docs/download.htm 2005-12-13 00:15:10.000000000 +0100
+++ new/docs/download.htm 2006-08-30 02:39:53.000000000 +0200
@@ -1,223 +1,435 @@
-http://www.w3.org/TR/html4/loose.dtd">
-
-<html>
+http://www.w3.org/TR/REC-html40">
<head>
-
+<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
+<meta name=ProgId content=Word.Document>
+<meta name=Generator content="Microsoft Word 11">
+<meta name=Originator content="Microsoft Word 11">
+<link rel=File-List href="http://fastcgi.coremail.cn/download.files/filelist.xml">
<title>The mod_fcgid Home Page</title>
-
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
-
+
+<!--[if gte mso 9]><xml>
+ <o:DocumentProperties>
+ <o:Author>JUJUMAO</o:Author>
+ <o:Template>Normal</o:Template>
+ <o:LastAuthor>JUJUMAO</o:LastAuthor>
+ <o:Revision>2</o:Revision>
+ <o:TotalTime>2</o:TotalTime>
+ <o:Created>2006-07-03T01:38:00Z</o:Created>
+ <o:LastSaved>2006-07-03T01:40:00Z</o:LastSaved>
+ <o:Pages>1</o:Pages>
+ <o:Words>1675</o:Words>
+ <o:Characters>9553</o:Characters>
+ <o:Company>JUJUMAO</o:Company>
+ <o:Lines>79</o:Lines>
+ <o:Paragraphs>22</o:Paragraphs>
+ <o:CharactersWithSpaces>11206</o:CharactersWithSpaces>
+ <o:Version>11.6568</o:Version>
+ </o:DocumentProperties>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <w:WordDocument>
+ <w:ValidateAgainstSchemas/>
+ <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
+ <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
+ <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
+ <w:Compatibility>
+ <w:UseFELayout/>
+ </w:Compatibility>
+ <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
+ </w:WordDocument>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <w:LatentStyles DefLockedState="false" LatentStyleCount="156">
+ </w:LatentStyles>
+</xml><![endif]--><!--[if !mso]><object
+ classid="clsid:38481807-CA0E-42D2-BF39-B33AF135CC4D" id=ieooui></object>
+<style>
+st1\:*{behavior:url(#ieooui) }
+</style>
+<![endif]-->
+<style>
+<!--
+ /* Font Definitions */
+ @font-face
+ {font-family:SimSun;
+ panose-1:2 1 6 0 3 1 1 1 1 1;
+ mso-font-alt:SimSun;
+ mso-font-charset:134;
+ mso-generic-font-family:auto;
+ mso-font-pitch:variable;
+ mso-font-signature:3 135135232 16 0 262145 0;}
+@font-face
+ {font-family:SimSun;
+ panose-1:2 1 6 0 3 1 1 1 1 1;
+ mso-font-charset:134;
+ mso-generic-font-family:auto;
+ mso-font-pitch:variable;
+ mso-font-signature:3 135135232 16 0 262145 0;}
+ /* Style Definitions */
+ p.MsoNormal, li.MsoNormal, div.MsoNormal
+ {mso-style-parent:"";
+ margin:0cm;
+ margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:12.0pt;
+ font-family:"Times New Roman";
+ mso-fareast-font-family:SimSun;}
+p
+ {font-size:12.0pt;
+ font-family:"Times New Roman";
+ mso-fareast-font-family:SimSun;}
+@page Section1
+ {size:595.3pt 841.9pt;
+ margin:72.0pt 90.0pt 72.0pt 90.0pt;
+ mso-header-margin:42.55pt;
+ mso-footer-margin:49.6pt;
+ mso-paper-source:0;}
+div.Section1
+ {page:Section1;}
+-->
+</style>
+<!--[if gte mso 10]>
+<style>
+ /* Style Definitions */
+ table.MsoNormalTable
+ {mso-style-name:\666E\901A\8868\683C;
+ mso-tstyle-rowband-size:0;
+ mso-tstyle-colband-size:0;
+ mso-style-noshow:yes;
+ mso-style-parent:"";
+ mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
+ mso-para-margin:0cm;
+ mso-para-margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:10.0pt;
+ font-family:"Times New Roman";
+ mso-fareast-font-family:"Times New Roman";
+ mso-ansi-language:#0400;
+ mso-fareast-language:#0400;
+ mso-bidi-language:#0400;}
+</style>
+<![endif]--><!--[if gte mso 9]><xml>
+ <o:shapedefaults v:ext="edit" spidmax="2050"/>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <o:shapelayout v:ext="edit">
+ <o:idmap v:ext="edit" data="1"/>
+ </o:shapelayout></xml><![endif]-->
</head>
-<body bgcolor="#ffffff">
+<body bgcolor=white lang=ZH-CN link=blue vlink=blue style='tab-interval:21.0pt'>
-<table border="0" cellpadding="5" cellspacing="0" width="893">
+<div class=Section1>
-<tr>
-
-<td align="center" valign="top" width="200">
-
-
-
-<table cellpadding="5" cellspacing="0">
-
-<tr>
-
-<td nowrap bgcolor="#f8eda6" align="left">
-
-<a href="index.htm">Home</a> <br>
-<a href="index.cn.htm">Chinese Info</a> <br>
-<a href="download.htm">Download (source)</a> <br>
-<a href="doc.htm">Documentations</a> <br>
-
-
-<a href="feedback.htm">Feedback</a>
-
-
-</td> </tr> </table> </td>
-
-<td valign="top" width="669">
-
-License: <a href="http://www.gnu.org/licenses/gpl.html">GPL</a>
-<p>version 1.07 ( Nov 10th 2005 )<br>
-1. Configuration IPCConnectTimeout, IPCCommTimeout, BusyTimeout can be overwrite in VirtualHost section<br>
- (Thank cthulhu at planet-multiplayer.de for the suggestion)<br>
-2. Add EXTRA_CFLAGS = -I$(builddir) in Makefile<br>
- (Thank contagion at gmail.com for the suggestion)<br>
-3. Support Apache 2.1 now (Patch by nick at webthing.com)<br>
- (Thank nick at webthing.com for the excellent patch)<br>
-4. Support "\r\n\t" HTTP header from CGI</p>
-<p>UNIX&Win32 source(ZIP): <a href="mod_fcgid.1.07.zip">mod_fcgid.1.07.zip</a></p>
-<p>UNIX&Win32 source(tar.gz): <a href="mod_fcgid.1.07.tar.gz">
-mod_fcgid.1.07.tar.gz</a></p>
-<p> </p>
-<p>version 1.06 ( Apr 27th 2005 )</p>
-1. "DefaultInitEnv" now can be placed inside VirtualHost section <br>
-2. Bug fix. "FCGIWrapper" now stores in a per-directory config
-structure. (The old implementation
-stores it in a per-server config structure, which may be overwrited by
-another
-<VirtualHost> section)
-(Thank phyre at rogers.com for bug report and the great help for the bug fix
-AGAIN)
-
-<p>UNIX&Win32 source(ZIP): <a href="mod_fcgid.1.06.zip">mod_fcgid.1.06.zip</a></p>
-<p>UNIX&Win32 source(tar.gz): <a href="mod_fcgid.1.06.tar.gz">
-mod_fcgid.1.06.tar.gz</a></p>
-<p> </p>
-<p>version 1.05 ( Mar 4th 2005 )<br>
-1. Bug fix(UNIX only). suEXEC wrapper in virtualhost environment will shares the process interpreters.<br>
- (Thank phyre at rogers.com for bug report and the great help to bug fix)</p>
-<p>UNIX&Win32 source(ZIP): <a href="mod_fcgid.1.05.zip">mod_fcgid.1.05.zip</a></p>
-<p>UNIX&Win32 source(tar.gz): <a href="mod_fcgid.1.05.tar.gz">
-mod_fcgid.1.05.tar.gz</a></p>
-<p>Win32 dll: <a href="mod_fcgid.so">mod_fcgid.so</a></p>
-<p> </p>
-<p>version 1.04 ( Dec 2nd 2004 )<br>
-1. Bug fix. ap_scan_script_header_err_core can return non OK without errors.<br>
- e.g. CGI outputs Last-Modified header and browser request with If-Mofieided-Since header, ap_scan_script_header_err_core() may
-returns 302(Not Modified)<br>
- (Thank Tatsuki Sugiura, sugi at nemui.org for the bug fix patch)<br>
-2. Choose FCGI wrappers based on file extentions.<br>
- e.g.<br>
-FCGIWrapper /usr/local/bin/php .php<br>
- Tells mod_fcgid calling all *.php scripts with wrapper /usr/local/bin/php.<br>
- (Thank Mathijs Brands, mathijs at crooked.net for the suggestion)</p>
-<p>UNIX&Win32 source(ZIP): <a href="mod_fcgid.1.04.zip">mod_fcgid.1.04.zip</a></p>
-<p>UNIX&Win32 source(tar.gz): <a href="mod_fcgid.1.04.tar.gz">
-mod_fcgid.1.04.tar.gz</a></p>
-<p> </p>
-<p>verison 1.03 ( Nov 3rd 2004 )</p>
-<p>1. Add configuration "OutputBufferSize". The old implementation keep CGI output in a 64k bytes buffer,
-before send them to web browser(for better network IO performance). If FCGI_Fflush() is called in your application, please add "OutputBufferSize 0" in you
-httpd.conf, which will not keep any CGI output in cache buffer.<br>
- The default value of OutputBufferSize is 64k byte.<br>
- (Thank Grzegorz Sampolski, gs at blink.pl)<br>
-2. Return HTTP_SERVICE_UNAVAILABLE instead of HTTP_INTERNAL_SERVER_ERROR, while mod_fcgid can not apply a FastCGI process slot. <br>
- (Thank Grzegorz Sampolski, gs at blink.pl for the suggestion)
-<p>UNIX&Win32 source(ZIP): <a href="mod_fcgid.1.03.zip">mod_fcgid.1.03.zip</a></p>
-<p>UNIX&Win32 source(tar.gz): <a href="mod_fcgid.1.03.tar.gz">
-mod_fcgid.1.03.tar.gz</a></p>
-<p> </p>
-<p>version 1.02 ( Oct 1st 2004 )<br>
-1. Bug fix. (Win32 only) Forward request to incorrect process when a script is a directory in the URL. </p>
-<p>For example, if in the "cgi-bin" directory there are two programs, "a.exe" and
-"b.exe". If you go to the URL "http://localhost/cgi-bin/a.exe/defghi" then a.exe will start.
-Then if you go to the URL "http://localhost/cgi-bin/b.exe/uvwxyz" the request will be
-processed by the already running a.exe. </p>
-<p> (Thank rripley at amadvertising.com)</p>
-<p>UNIX&Win32 source(ZIP): <a href="mod_fcgid.1.02.zip">mod_fcgid.1.02.zip</a></p>
-<p>UNIX&Win32 source(tar.gz): <a href="mod_fcgid.1.02.tar.gz">
-mod_fcgid.1.02.tar.gz</a></p>
-<p> </p>
-<p>version 1.01 ( Sep 21st 2004 )</p>
-<p>1. More graceful implementation of suEXEC on UNIX. (Thank radek at karnet.pl
-for the advice)</p>
-<p>UNIX&Win32 source(ZIP): <a href="mod_fcgid.1.01.zip">mod_fcgid.1.01.zip</a></p>
-<p>UNIX&Win32 source(tar.gz): <a href="mod_fcgid.1.01.tar.gz">
-mod_fcgid.1.01.tar.gz</a></p>
-<p> </p>
-<p>version 1.00 ( Sep 10th 2004 ) <br>
-1. Release FastCGI process slot before sending buffer back to browser. (less process count)</p>
-<p>UNIX&Win32 source(ZIP): <a href="mod_fcgid.1.00.zip">mod_fcgid.1.00.zip</a></p>
-<p>UNIX&Win32 source(tar.gz): <a href="mod_fcgid.1.00.tar.gz">
-mod_fcgid.1.00.tar.gz</a></p>
-<p> </p>
-<p>version 0.88 ( Sep 3rd 2004 ) <br>
-1. Bug fix. File descriptor is closed twice if connect to UNIX domain socket error.<br>
-2. Bug fix. Get server last active time incorrectly.</p>
-<p>UNIX&Win32 source(ZIP): <a href="mod_fcgid.0.88.zip">mod_fcgid.0.88.zip</a></p>
-<p>UNIX&Win32 source(tar.gz): <a href="mod_fcgid.0.88.tar.gz">
-mod_fcgid.0.88.tar.gz</a></p>
-<p> </p>
-<p>version 0.87 ( Aug 26th 2004 )<br>
-1. suEXEC supported.</p>
-<p>UNIX&Win32 source(ZIP): <a href="mod_fcgid.0.87.zip">mod_fcgid.0.87.zip</a></p>
-<p>UNIX&Win32 source(tar.gz): <a href="mod_fcgid.0.87.tar.gz">
-mod_fcgid.0.87.tar.gz</a></p>
-<p> </p>
-<p>version 0.86 ( Aug 22th 2004 )<br>
-Some major changes for performance. (Hits/Second is 30% greater than the old
-implementation)<br>
-1. Socket bucket instead of heap bucket. (less memory)<br>
-2. Pass buffer to browser, once the size of buffer exceed 64k bytes. (less memory)<br>
-3. Non-block unix domain socket on UNIX. (better I/O performance)<br>
-4. writev() instead of write() on UNIX. (better I/O performance)<br>
-5. Try to read at least 8k bytes each single reading. (better I/O performance)<br>
-6. Disconnect FastCGI server, once browser disconnect. (less process count)</p>
-<p>UNIX&Win32 source(ZIP): <a href="mod_fcgid.0.86.zip">mod_fcgid.0.86.zip</a></p>
-<p>UNIX&Win32 source(tar.gz): <a href="mod_fcgid.0.86.tar.gz">
-mod_fcgid.0.86.tar.gz</a></p>
-<p> </p>
-<p>version 0.80 ( Jul 27th 2004 ) </p>
-<p>1. Duplex channel added, Apache now will get notification once FastCGI process is spawned.</p>
-<p>2. Bug fix. The FastCGI process share the signal handler with PM(Process Manager) process, if
-FastCGI process get signal after fork() but before execve(), it will corrupt the
-share memory. ( It's a very short interval between fork() and execve(), so this rarely happens )</p>
-<p>UNIX&Win32 source(ZIP): <a href="mod_fcgid.0.80.zip">mod_fcgid.0.80.zip</a></p>
-<p>UNIX&Win32 source(tar.gz): <a href="mod_fcgid.0.80.tar.gz">
-mod_fcgid.0.80.tar.gz</a></p>
-<p> </p>
-<p>version 0.77 ( Jul 9th 2004 )<br>
-1. Organize the configuration again<br>
- 1) add "FCGIWrapperGroup" setting<br>
- 2) "FCGIWrapper" now takes only one argument<br>
- 3) remove "ServerConfig" setting, because it't not work with wrapper yet<br>
-<b>
-Please visit http://fastcgi.coremail.cn/doc.htm for more information about configuration</b></p>
-<p>UNIX&Win32 source(ZIP): <a href="mod_fcgid.0.77.zip">mod_fcgid.0.77.zip</a></p>
-<p>UNIX&Win32 source(tar.gz): <a href="mod_fcgid.0.77.tar.gz">
-mod_fcgid.0.77.tar.gz</a></p>
-<p> </p>
-<p>version 0.76 ( Jul 6th 2004 )<br>
-1. Code fix. Replace the depreciated BRIGADE_FOREACH macro, which compile against httpd 2.1-Dev.<br>
- (Patch by Paul Querna(chip at force-elite.com))</p>
-<p>2. PHP FastCGI Wrapper now can be run both with "share" and "non-share" mode.</p>
-<p><br>
-UNIX&Win32 source(ZIP): <a href="mod_fcgid.0.76.zip">mod_fcgid.0.76.zip</a></p>
-<p>UNIX&Win32 source(tar.gz): <a href="mod_fcgid.0.76.tar.gz">
-mod_fcgid.0.76.tar.gz</a></p>
-<p> </p>
-<p>version 0.74 ( Jun 23rd 2004 )</p>
-<p>1. Bug fix. Ignore script checking while running in Win32 PHP wrapper mode.</p>
-<p>2. Indent the code with K&R style.</p>
-<p>UNIX&Win32 source(ZIP): <a href="mod_fcgid.0.74.zip">mod_fcgid.0.74.zip</a></p>
-<p>UNIX&Win32 source(tar.gz): <a href="mod_fcgid.0.74.tar.gz">
-mod_fcgid.0.74.tar.gz</a></p>
-<p> </p>
-<p>version 0.72 ( Jun 13rd 2004 )<br>
-1. Bug fix. Trim the padding nuls at the end of data. (Thank rick.stewart at theinternetco.net)</p>
-<p>UNIX&Win32 source(ZIP): <a href="mod_fcgid.0.72.zip">mod_fcgid.0.72.zip</a></p>
-<p>UNIX&Win32 source(tar.gz): <a href="mod_fcgid.0.72.tar.gz">
-mod_fcgid.0.72.tar.gz</a></p>
-<p> </p>
-<p>version 0.7 ( May 22nd 2004 )</p>
-<p>1. PHP FastCGI wrapper is supported on UNIX and Windows.</p>
-<p>UNIX&Win32 source(ZIP): <a href="mod_fcgid.0.7.zip">mod_fcgid.0.7.zip</a></p>
-<p>UNIX&Win32 source(tar.gz): <a href="mod_fcgid.0.7.tar.gz">
-mod_fcgid.0.7.tar.gz</a></p>
-<p> </p>
-<p>version 0.62 ( May 18th 2004 )</p>
-<p>1. Unix version now compilable with gcc2.95.2</p>
-<p>2. Unix version is tested on Solaris7 & Solaris8</p>
-<p>UNIX&Win32 source(ZIP): <a href="mod_fcgid.0.62.zip">mod_fcgid.0.62.zip</a></p>
-<p>UNIX&Win32 source(tar.gz): <a href="mod_fcgid.0.62.tar.gz">
-mod_fcgid.0.62.tar.gz</a></p>
-<p> </p>
-<p>version 0.6 ( May 8th 2004 )</p>
-<p>1. Unix version is tested on Redhat8(gcc3)</p>
-<p>2. Windows version is tested on Win2k(VC6)</p>
-<p>UNIX&Win32 source(ZIP): <a href="mod_fcgid.0.6.zip">mod_fcgid.0.6.zip</a></p>
-<p>UNIX&Win32 source(tar.gz): <a href="mod_fcgid.0.6.tar.gz">mod_fcgid.0.6.tar.gz</a></p>
-<p> </p>
-<p>
+<table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0 width=893
+ style='width:669.75pt;mso-cellspacing:0cm;mso-padding-alt:3.75pt 3.75pt 3.75pt 3.75pt'>
+ <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes'>
+ <td width=200 valign=top style='width:150.0pt;padding:3.75pt 3.75pt 3.75pt 3.75pt'>
+ <p class=MsoNormal align=center style='text-align:center'><span lang=EN-US>
+ </span></p>
+ <div align=center>
+ <table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0
+ style='mso-cellspacing:0cm;mso-padding-alt:3.75pt 3.75pt 3.75pt 3.75pt'>
+ <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes'>
+ <td nowrap style='background:#F8EDA6;padding:3.75pt 3.75pt 3.75pt 3.75pt'>
+ <p class=MsoNormal><span lang=EN-US><a href="index.htm">Home</a> <br>
+ <a href="index.cn.htm">Chinese Info</a> <br>
+ <a href="download.htm">Download (source)</a> <br>
+ <a href="doc.htm">Documentations</a> <br>
+ <a href="feedback.htm">Feedback</a> </span></p>
+ </td>
+ </tr>
+ </table>
+ </div>
+ <p class=MsoNormal align=center style='text-align:center'><span lang=EN-US></span></p>
+ </td>
+ <td width=669 valign=top style='width:501.75pt;padding:3.75pt 3.75pt 3.75pt 3.75pt'>
+ <p class=MsoNormal><span lang=EN-US>License: http://www.gnu.org/licenses/gpl.html">GPL</a> </span></p>
+ <p class=MsoNormal><span lang=EN-US> </span></p>
+ <p class=MsoNormal><span lang=EN-US>version 1.10 ( Jul 3rd 2006 )</span></p>
+ <p class=MsoNormal><span lang=EN-US>1. Use poll() instead of select() in
+ UNIX. "It becomes problematic on apache2 with</span></p>
+ <p class=MsoNormal><span lang=EN-US>large number of logfiles. Apache2 calls
+ poll() (when OS supports it), and in that</span></p>
+ <p class=MsoNormal><span lang=EN-US>case it doesn't need to be recompiled
+ with larger FD_SETSIZE. select() is</span></p>
+ <p class=MsoNormal><span lang=EN-US>still limited to FD_SETSIZE."</span></p>
+ <p class=MsoNormal><span lang=EN-US>
+ </span>Thank Piotr Gackiewicz gacek at intertele.pl for the patch.</span></p>
+ <p class=MsoNormal><span lang=EN-US>2. Bug fix: "Some requests fail with
+ HTTP 500 and no errorlog entry is generated"</span></p>
+ <p class=MsoNormal><span lang=EN-US><span style='mso-spacerun:yes'>
+ </span> </span>Thank
+ Piotr Gackiewicz gacek at intertele.pl for the patch.</span></p>
+ <p class=MsoNormal><span lang=EN-US>3. Use anonymouse share memeory to make
+ OS X happy.</span></p>
+ <p class=MsoNormal><span lang=EN-US>
+ </span>Thank andkjar at obtech.net for the patch.</span></p>
+ <p class=MsoNormal><span lang=EN-US>4. Add config.m4, mod_fcgid now can be
+ static linked in httpd(See INSTALL.txt)</span></p>
+ <p><span lang=EN-US>UNIX&Win32 source(ZIP): http://fastcgi.coremail.cn/mod_fcgid.1.10.zip">mod_fcgid.1.10.zip</a></span></p>
+ <p><span lang=EN-US>UNIX&Win32 source(tar.gz): http://fastcgi.coremail.cn/mod_fcgid.1.10.tar.gz"> mod_fcgid.1.10.tar.gz</a></span></p>
+ <p class=MsoNormal><span lang=EN-US> </span></p>
+ <p><span lang=EN-US>version 1.09 ( Apr 25th 2006 )<br>
+ 1. Add configuration DefaultMinClassProcessCount(default 3). Idle fastcgi
+ will not be killed if their count less than
+ DefaultMinClassProcessCount. (Thank Finn Smith, finn at timeghost.net
+ for suggestion)<br>
+ 2. Add configuration PHP_Fix_Pathinfo_Enable(default 0). If you are
+ using PHP and set cgi.fix_pathinfo=1 in
+ php.ini, please add "PHP_Fix_Pathinfo_Enable 1" in
+ httpd.conf. (Thank Florian Munz, flo at myhosting.de for bug
+ report) <br>
+ 3. Split error log whle '\r' or '\n' are inside the text send to
+ "stderr". (Thank frederic at jolliton.com for the patch)</span></p>
+ <p><span lang=EN-US>UNIX&Win32 source(ZIP): http://fastcgi.coremail.cn/mod_fcgid.1.09.zip">mod_fcgid.1.09.zip</a></span></p>
+ <p><span lang=EN-US>UNIX&Win32 source(tar.gz): http://fastcgi.coremail.cn/mod_fcgid.1.09.tar.gz"> mod_fcgid.1.09.tar.gz</a></span></p>
+ <p><span lang=EN-US> </span></p>
+ <p><span lang=EN-US>version 1.08 ( Jan 22nd 2006 )<br>
+ 1. apr_bucket_copy() does not work with buckets from mod_ssl, use
+ apr_bucket_heap_create() instead :(<br>
+ (Thank Grzegorz Sampolski, gs at blink.pl for the bug report)<br>
+ 2. Wrapper binary can be stored in a different location to the web content
+ (like /usr/local/apache2/fcgi-bin)<br>
+ (Patch from Stephen Grier, s.e.grier at qmul.ac.uk)<br>
+ 3. Support Apache 2.2 now<br>
+ (Patch from RyoYazaki, yazaki.ryo at mind.co.jp, and many other people report
+ the compiling problem)<br>
+ 4. Support "\r\n\r\n " HTTP header from CGI<br>
+ (Thank Grzegorz Sampolski, gs at blink.pl for the bug report)</span></p>
+ <p><span lang=EN-US>UNIX&Win32 source(ZIP): http://fastcgi.coremail.cn/mod_fcgid.1.08.zip">mod_fcgid.1.08.zip</a></span></p>
+ <p><span lang=EN-US>UNIX&Win32 source(tar.gz): http://fastcgi.coremail.cn/mod_fcgid.1.08.tar.gz"> mod_fcgid.1.08.tar.gz</a></span></p>
+ <p><span lang=EN-US> </span></p>
+ <p><span lang=EN-US>version 1.07 ( Nov 10th 2005 )<br>
+ 1. Configuration IPCConnectTimeout, IPCCommTimeout, BusyTimeout can be
+ overwrite in VirtualHost section<br>
+ (Thank cthulhu at planet-multiplayer.de for the suggestion)<br>
+ 2. Add EXTRA_CFLAGS = -I$(builddir) in Makefile<br>
+ (Thank contagion at gmail.com for the suggestion)<br>
+ 3. Support Apache 2.1 now (Patch by nick at webthing.com)<br>
+ (Thank nick at webthing.com for the excellent patch)<br>
+ 4. Support "\r\n\t" HTTP header from CGI</span></p>
+ <p><span lang=EN-US>UNIX&Win32 source(ZIP): http://fastcgi.coremail.cn/mod_fcgid.1.07.zip">mod_fcgid.1.07.zip</a></span></p>
+ <p><span lang=EN-US>UNIX&Win32 source(tar.gz): http://fastcgi.coremail.cn/mod_fcgid.1.07.tar.gz"> mod_fcgid.1.07.tar.gz</a></span></p>
+ <p><span lang=EN-US> </span></p>
+ <p><span lang=EN-US>version 1.06 ( Apr 27th 2005 )</span></p>
+ <p class=MsoNormal><span lang=EN-US>1. "DefaultInitEnv" now can be
+ placed inside VirtualHost section <br>
+ 2. Bug fix. "FCGIWrapper" now stores in a per-directory config
+ structure. (The old implementation stores it in a per-server config
+ structure, which may be overwrited by another <VirtualHost> section)
+ (Thank phyre at rogers.com for bug report and the great help for the bug fix
+ AGAIN) </span></p>
+ <p><span lang=EN-US>UNIX&Win32 source(ZIP): http://fastcgi.coremail.cn/mod_fcgid.1.06.zip">mod_fcgid.1.06.zip</a></span></p>
+ <p><span lang=EN-US>UNIX&Win32 source(tar.gz): http://fastcgi.coremail.cn/mod_fcgid.1.06.tar.gz"> mod_fcgid.1.06.tar.gz</a></span></p>
+ <p><span lang=EN-US> </span></p>
+ <p><span lang=EN-US>version 1.05 ( Mar 4th 2005 )<br>
+ 1. Bug fix(UNIX only). suEXEC wrapper in virtualhost environment will shares
+ the process interpreters.<br>
+ (Thank phyre at rogers.com for bug report and the great help to bug fix)</span></p>
+ <p><span lang=EN-US>UNIX&Win32 source(ZIP): http://fastcgi.coremail.cn/mod_fcgid.1.05.zip">mod_fcgid.1.05.zip</a></span></p>
+ <p><span lang=EN-US>UNIX&Win32 source(tar.gz): http://fastcgi.coremail.cn/mod_fcgid.1.05.tar.gz"> mod_fcgid.1.05.tar.gz</a></span></p>
+ <p><span lang=EN-US> </span></p>
+ <p><span lang=EN-US>version 1.04 ( Dec 2nd 2004 )<br>
+ 1. Bug fix. ap_scan_script_header_err_core can return non OK without errors.<br>
+ e.g. CGI outputs Last-Modified header and browser request with
+ If-Mofieided-Since header, ap_scan_script_header_err_core() may returns
+ 302(Not Modified)<br>
+ (Thank Tatsuki Sugiura, sugi at nemui.org for the bug fix patch)<br>
+ 2. Choose FCGI wrappers based on file extentions.<br>
+ e.g.<br>
+ FCGIWrapper /usr/local/bin/php .php<br>
+ Tells mod_fcgid calling all *.php scripts with wrapper /usr/local/bin/php.<br>
+ (Thank Mathijs Brands, mathijs at crooked.net for the suggestion)</span></p>
+ <p><span lang=EN-US>UNIX&Win32 source(ZIP): http://fastcgi.coremail.cn/mod_fcgid.1.04.zip">mod_fcgid.1.04.zip</a></span></p>
+ <p><span lang=EN-US>UNIX&Win32 source(tar.gz): http://fastcgi.coremail.cn/mod_fcgid.1.04.tar.gz"> mod_fcgid.1.04.tar.gz</a></span></p>
+ <p><span lang=EN-US> </span></p>
+ <p><span lang=EN-US>verison 1.03 ( Nov 3rd 2004 )</span></p>
+ <p><span lang=EN-US>1. Add configuration "OutputBufferSize". The
+ old implementation keep CGI output in a 64k bytes buffer, before send them to
+ web browser(for better network IO performance). If FCGI_Fflush() is called in
+ your application, please add "OutputBufferSize 0" in you
+ httpd.conf, which will not keep any CGI output in cache buffer.<br>
+ The default value of OutputBufferSize is 64k byte.<br>
+ (Thank Grzegorz Sampolski, gs at blink.pl)<br>
+ 2. Return HTTP_SERVICE_UNAVAILABLE instead of HTTP_INTERNAL_SERVER_ERROR,
+ while mod_fcgid can not apply a FastCGI process slot. <br>
+ (Thank Grzegorz Sampolski, gs at blink.pl for the suggestion) </span></p>
+ <p><span lang=EN-US>UNIX&Win32 source(ZIP): http://fastcgi.coremail.cn/mod_fcgid.1.03.zip">mod_fcgid.1.03.zip</a></span></p>
+ <p><span lang=EN-US>UNIX&Win32 source(tar.gz): http://fastcgi.coremail.cn/mod_fcgid.1.03.tar.gz"> mod_fcgid.1.03.tar.gz</a></span></p>
+ <p><span lang=EN-US> </span></p>
+ <p><span lang=EN-US>version 1.02 ( Oct 1st 2004 )<br>
+ 1. Bug fix. (Win32 only) Forward request to incorrect process when a script
+ is a directory in the URL. </span></p>
+ <p><span lang=EN-US>For example, if in the "cgi-bin" directory
+ there are two programs, "a.exe" and "b.exe". If you go to
+ the URL "http://localhost/cgi-bin/a.exe/defghi" then a.exe will
+ start. Then if you go to the URL
+ "http://localhost/cgi-bin/b.exe/uvwxyz" the request will be
+ processed by the already running a.exe. </span></p>
+ <p><span lang=EN-US>(Thank rripley at amadvertising.com)</span></p>
+ <p><span lang=EN-US>UNIX&Win32 source(ZIP): http://fastcgi.coremail.cn/mod_fcgid.1.02.zip">mod_fcgid.1.02.zip</a></span></p>
+ <p><span lang=EN-US>UNIX&Win32 source(tar.gz): http://fastcgi.coremail.cn/mod_fcgid.1.02.tar.gz"> mod_fcgid.1.02.tar.gz</a></span></p>
+ <p><span lang=EN-US> </span></p>
+ <p><span lang=EN-US>version 1.01 ( Sep 21st 2004 )</span></p>
+ <p><span lang=EN-US>1. More graceful implementation of suEXEC on UNIX. (Thank
+ radek at karnet.pl for the advice)</span></p>
+ <p><span lang=EN-US>UNIX&Win32 source(ZIP): http://fastcgi.coremail.cn/mod_fcgid.1.01.zip">mod_fcgid.1.01.zip</a></span></p>
+ <p><span lang=EN-US>UNIX&Win32 source(tar.gz): http://fastcgi.coremail.cn/mod_fcgid.1.01.tar.gz"> mod_fcgid.1.01.tar.gz</a></span></p>
+ <p><span lang=EN-US> </span></p>
+ <p><span lang=EN-US>version 1.00 ( Sep 10th 2004 ) <br>
+ 1. Release FastCGI process slot before sending buffer back to browser. (less
+ process count)</span></p>
+ <p><span lang=EN-US>UNIX&Win32 source(ZIP): http://fastcgi.coremail.cn/mod_fcgid.1.00.zip">mod_fcgid.1.00.zip</a></span></p>
+ <p><span lang=EN-US>UNIX&Win32 source(tar.gz): http://fastcgi.coremail.cn/mod_fcgid.1.00.tar.gz"> mod_fcgid.1.00.tar.gz</a></span></p>
+ <p><span lang=EN-US> </span></p>
+ <p><span lang=EN-US>version 0.88 ( Sep 3rd 2004 ) <br>
+ 1. Bug fix. File descriptor is closed twice if connect to UNIX domain socket
+ error.<br>
+ 2. Bug fix. Get server last active time incorrectly.</span></p>
+ <p><span lang=EN-US>UNIX&Win32 source(ZIP): http://fastcgi.coremail.cn/mod_fcgid.0.88.zip">mod_fcgid.0.88.zip</a></span></p>
+ <p><span lang=EN-US>UNIX&Win32 source(tar.gz): http://fastcgi.coremail.cn/mod_fcgid.0.88.tar.gz"> mod_fcgid.0.88.tar.gz</a></span></p>
+ <p><span lang=EN-US> </span></p>
+ <p><span lang=EN-US>version 0.87 ( Aug 26th 2004 )<br>
+ 1. suEXEC supported.</span></p>
+ <p><span lang=EN-US>UNIX&Win32 source(ZIP): http://fastcgi.coremail.cn/mod_fcgid.0.87.zip">mod_fcgid.0.87.zip</a></span></p>
+ <p><span lang=EN-US>UNIX&Win32 source(tar.gz): http://fastcgi.coremail.cn/mod_fcgid.0.87.tar.gz"> mod_fcgid.0.87.tar.gz</a></span></p>
+ <p><span lang=EN-US> </span></p>
+ <p><span lang=EN-US>version 0.86 ( Aug 22th 2004 )<br>
+ Some major changes for performance. (Hits/Second is 30% greater than the old
+ implementation)<br>
+ 1. Socket bucket instead of heap bucket. (less memory)<br>
+ 2. Pass buffer to browser, once the size of buffer exceed 64k bytes. (less
+ memory)<br>
+ 3. Non-block unix domain socket on UNIX. (better I/O performance)<br>
+ 4. writev() instead of write() on UNIX. (better I/O performance)<br>
+ 5. Try to read at least 8k bytes each single reading. (better I/O
+ performance)<br>
+ 6. Disconnect FastCGI server, once browser disconnect. (less process count)</span></p>
+ <p><span lang=EN-US>UNIX&Win32 source(ZIP): http://fastcgi.coremail.cn/mod_fcgid.0.86.zip">mod_fcgid.0.86.zip</a></span></p>
+ <p><span lang=EN-US>UNIX&Win32 source(tar.gz): http://fastcgi.coremail.cn/mod_fcgid.0.86.tar.gz"> mod_fcgid.0.86.tar.gz</a></span></p>
+ <p><span lang=EN-US> </span></p>
+ <p><span lang=EN-US>version 0.80 ( Jul 27th 2004 ) </span></p>
+ <p><span lang=EN-US>1. Duplex channel added, Apache now will get notification
+ once FastCGI process is spawned.</span></p>
+ <p><span lang=EN-US>2. Bug fix. The FastCGI process share the signal handler
+ with PM(Process Manager) process, if FastCGI process get signal after
+ fork() but before execve(), it will corrupt the share memory. ( It's a very
+ short interval between fork() and execve(), so this rarely happens )</span></p>
+ <p><span lang=EN-US>UNIX&Win32 source(ZIP): http://fastcgi.coremail.cn/mod_fcgid.0.80.zip">mod_fcgid.0.80.zip</a></span></p>
+ <p><span lang=EN-US>UNIX&Win32 source(tar.gz): http://fastcgi.coremail.cn/mod_fcgid.0.80.tar.gz"> mod_fcgid.0.80.tar.gz</a></span></p>
+ <p><span lang=EN-US> </span></p>
+ <p><span lang=EN-US>version 0.77 ( Jul 9th 2004 )<br>
+ 1. Organize the configuration again<br>
+ 1) add "FCGIWrapperGroup" setting<br>
+ 2) "FCGIWrapper" now takes only one argument<br>
+ 3) remove "ServerConfig" setting, because it't not work with
+ wrapper yet<br>
+ <b>Please visit http://fastcgi.coremail.cn/doc.htm for more information about
+ configuration</b></span></p>
+ <p><span lang=EN-US>UNIX&Win32 source(ZIP): http://fastcgi.coremail.cn/mod_fcgid.0.77.zip">mod_fcgid.0.77.zip</a></span></p>
+ <p><span lang=EN-US>UNIX&Win32 source(tar.gz): http://fastcgi.coremail.cn/mod_fcgid.0.77.tar.gz"> mod_fcgid.0.77.tar.gz</a></span></p>
+ <p><span lang=EN-US> </span></p>
+ <p><span lang=EN-US>version 0.76 ( Jul 6th 2004 )<br>
+ 1. Code fix. Replace the depreciated BRIGADE_FOREACH macro, which compile
+ against httpd 2.1-Dev.<br>
+ (Patch by Paul Querna(chip at force-elite.com))</span></p>
+ <p><span lang=EN-US>2. PHP FastCGI Wrapper now can be run both with
+ "share" and "non-share" mode.</span></p>
+ <p><span lang=EN-US><br>
+ UNIX&Win32 source(ZIP): <a href="http://fastcgi.coremail.cn/mod_fcgid.0.76.zip">mod_fcgid.0.76.zip</a></span></p>
+ <p><span lang=EN-US>UNIX&Win32 source(tar.gz): http://fastcgi.coremail.cn/mod_fcgid.0.76.tar.gz"> mod_fcgid.0.76.tar.gz</a></span></p>
+ <p><span lang=EN-US> </span></p>
+ <p><span lang=EN-US>version 0.74 ( Jun 23rd 2004 )</span></p>
+ <p><span lang=EN-US>1. Bug fix. Ignore script checking while running in Win32
+ PHP wrapper mode.</span></p>
+ <p><span lang=EN-US>2. Indent the code with K&R style.</span></p>
+ <p><span lang=EN-US>UNIX&Win32 source(ZIP): http://fastcgi.coremail.cn/mod_fcgid.0.74.zip">mod_fcgid.0.74.zip</a></span></p>
+ <p><span lang=EN-US>UNIX&Win32 source(tar.gz): http://fastcgi.coremail.cn/mod_fcgid.0.74.tar.gz"> mod_fcgid.0.74.tar.gz</a></span></p>
+ <p><span lang=EN-US> </span></p>
+ <p><span lang=EN-US>version 0.72 ( Jun 13rd 2004 )<br>
+ 1. Bug fix. Trim the padding nuls at the end of data. (Thank rick.stewart at
+ theinternetco.net)</span></p>
+ <p><span lang=EN-US>UNIX&Win32 source(ZIP): http://fastcgi.coremail.cn/mod_fcgid.0.72.zip">mod_fcgid.0.72.zip</a></span></p>
+ <p><span lang=EN-US>UNIX&Win32 source(tar.gz): http://fastcgi.coremail.cn/mod_fcgid.0.72.tar.gz"> mod_fcgid.0.72.tar.gz</a></span></p>
+ <p><span lang=EN-US> </span></p>
+ <p><span lang=EN-US>version 0.7 ( May 22nd 2004 )</span></p>
+ <p><span lang=EN-US>1. PHP FastCGI wrapper is supported on UNIX and Windows.</span></p>
+ <p><span lang=EN-US>UNIX&Win32 source(ZIP): http://fastcgi.coremail.cn/mod_fcgid.0.7.zip">mod_fcgid.0.7.zip</a></span></p>
+ <p><span lang=EN-US>UNIX&Win32 source(tar.gz): http://fastcgi.coremail.cn/mod_fcgid.0.7.tar.gz"> mod_fcgid.0.7.tar.gz</a></span></p>
+ <p><span lang=EN-US> </span></p>
+ <p><span lang=EN-US>version 0.62 ( May 18th 2004 )</span></p>
+ <p><span lang=EN-US>1. Unix version now compilable with gcc2.95.2</span></p>
+ <p><span lang=EN-US>2. Unix version is tested on Solaris7 & Solaris8</span></p>
+ <p><span lang=EN-US>UNIX&Win32 source(ZIP): http://fastcgi.coremail.cn/mod_fcgid.0.62.zip">mod_fcgid.0.62.zip</a></span></p>
+ <p><span lang=EN-US>UNIX&Win32 source(tar.gz): http://fastcgi.coremail.cn/mod_fcgid.0.62.tar.gz"> mod_fcgid.0.62.tar.gz</a></span></p>
+ <p><span lang=EN-US> </span></p>
+ <p><span lang=EN-US>version 0.6 ( May 8th 2004 )</span></p>
+ <p><span lang=EN-US>1. Unix version is tested on Redhat8(gcc3)</span></p>
+ <p><span lang=EN-US>2. Windows version is tested on Win2k(VC6)</span></p>
+ <p><span lang=EN-US>UNIX&Win32 source(ZIP): http://fastcgi.coremail.cn/mod_fcgid.0.6.zip">mod_fcgid.0.6.zip</a></span></p>
+ <p><span lang=EN-US>UNIX&Win32 source(tar.gz): http://fastcgi.coremail.cn/mod_fcgid.0.6.tar.gz">mod_fcgid.0.6.tar.gz</a></span></p>
+ <p><span lang=EN-US> </span></p>
+ <p><span lang=EN-US> </span></p>
+ </td>
+ </tr>
+</table>
-</td>
+<p class=MsoNormal><span lang=EN-US> </span></p>
-</tr>
+</div>
-</table>
+</body>
-</body></html>
+</html>
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/docs/feedback.htm new/docs/feedback.htm
--- old/docs/feedback.htm 2005-12-13 00:15:10.000000000 +0100
+++ new/docs/feedback.htm 2006-08-30 02:39:53.000000000 +0200
@@ -44,9 +44,8 @@
<td valign="top" width="720">
-If you have any question, comment or suggestion, please give me a email(Please
-add [mod_fcgid] in subject)
-<p>pqf at tebie.com
+If you have any question, comment or suggestion, please email to this MailList:
+</p>https://lists.sourceforge.net/lists/listinfo/mod-fcgid-users
</td>
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/docs/index.html new/docs/index.html
--- old/docs/index.html 2005-12-13 00:15:10.000000000 +0100
+++ new/docs/index.html 1970-01-01 01:00:00.000000000 +0100
@@ -1,104 +0,0 @@
-http://www.w3.org/TR/html4/loose.dtd">
-
-<html>
-
-<head>
-
-<title>The mod_fcgid Home Page, mod_fcgid is an Apache2 module for FastCGI
-protcol</title>
-
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
-
-</head>
-
-<body bgcolor="#ffffff">
-
-<table border="0" cellpadding="5" cellspacing="0" width="100%">
-
-<tr>
-
-<td align="center" valign="top">
-
-
-
-<table cellpadding="5" cellspacing="0">
-
-<tr>
-
-<td nowrap bgcolor="#f8eda6" align="left">
-
-<a href="index.htm">Home</a> <br>
-<a href="index.cn.htm">Chinese Info</a> <br>
-<a href="download.htm">Download (source)</a> <br>
-<a href="doc.htm">Documentations</a> <br>
-
-
-<a href="feedback.htm">Feedback</a>
-
-
-</td> </tr> </table> </td>
-
-<td valign="top">
-
-<p> <b><font size="6">Welcome to mod_fcgid home</font></b> </p>
-
-<p> What is mod_fcgid? It is a binary compatibility alternative to <a href="http://www.apache.org">Apache</a>
-module <a href="http://www.fastcgi.com">mod_fastcgi</a>. </p>
-
-<p>mod_fcgid has a new process management strategy, which concentrates on reducing
-the number of fastcgi server, and kick out the corrupt fastcgi server as soon as
-possible. </p>
-
-<p> </p>
-
-<p><b><font face="Times New Roman" size="4">Goals For the Implementation</font></b> </p>
-
-<p><b>Binary compatibility to mod_fastcgi</b><br>
-You don't need to recompile your existing fastcgi programs, what you need to do is install the
-module and make it work. </p>
-
-<p><br>
-<b>Strict control on process spawn</b><br>
-Every request handler of Apache (It may be a process, or a thread, depending on the MPM) knows
-about how many existing fastcgi servers are running (with the help of share memory) , and the request
-handlers collaborate with each other to make sure over-spawning is not going to happen. </p>
-
-<p><br>
-<b>Simple spawning-speed control strategy</b><br>
-It's a score-based strategy, the score increases while a process is spawned or terminated, and decreases
-as time progresses;while the score is higher than the score maximum,the spawning will be held. Thus it can make a prompt response to the requests especially when the system starts up: on the other hand, prevent the failure resulted from the immediate termination of the applications. </p>
-
-<p><br>
-<b>Fastcgi server error detection</b><br>
-The fastcgi server does not share the same UNIX domain socket (or named pipe, in Windows), every fastcgi<br>
-server has a unique path listening on. That makes it easy to kick out the corrupt fastcgi server. </p>
-
-<p><br>
-<b> Portable</b><br>
-Use the Apache APR library as much as possible, and split the portable and un-portable source code. All<br>
-un-portable code are organized in arch directory. Now the module is tested on Linux,
-FreeBSD( included in FreeBSD port now), Windows 2000 and Solaris.
- </p>
-
-<p><br>
-<b>PHP supported</b><br>
-PHP is NOT recommended to work with multithreaded Apache2(worker MPM and WinNT
-MPM, for example), because some PHP extensions( or 3rd party library they are
-using) are not guaranteed thread-safe. PHP running with FastCGI mode is a
-solution to this problem.
- </p>
-
-<p>To enable FastCGI, You can configure PHP with --enable-fastcgi and recompile
-PHP . ( FastCGI is build in supported if PHP is installed with Win32
-installer, which can be downloaded from <a href="http://www.php.net">www.php.net</a>
-)
- </p>
-
-</td>
-
-</tr>
-
-</table>
-
-</body></html>
++++++ mod_fcgid.1.07-suse_paths.patch ++++++
--- /var/tmp/diff_new_pack.yojjih/_old 2006-10-19 13:12:07.000000000 +0200
+++ /var/tmp/diff_new_pack.yojjih/_new 2006-10-19 13:12:07.000000000 +0200
@@ -11,7 +11,7 @@
top_srcdir = ${top_dir}
top_builddir = ${top_dir}
-@@ -12,9 +12,9 @@
+@@ -12,9 +12,10 @@
include ${top_builddir}/build/special.mk
@@ -19,6 +19,7 @@
+APXS = /usr/sbin/apxs2-prefork
APACHECTL = apachectl
-EXTRA_CFLAGS = -I$(builddir)
++
+EXTRA_CFLAGS = -I$(builddir) -I/usr/include/apache2-prefork
#DEFS=-Dmy_define=my_value
++++++ mod_fcgid.1.07.tar.bz2 -> mod_fcgid.1.10.tar.bz2 ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/mod_fcgid.1.07/ChangeLog new/mod_fcgid.1.10/ChangeLog
--- old/mod_fcgid.1.07/ChangeLog 2005-11-15 03:54:08.000000000 +0100
+++ new/mod_fcgid.1.10/ChangeLog 2006-07-03 03:32:37.000000000 +0200
@@ -1,3 +1,35 @@
+version 1.10 ( Jul 3rd 2006 )
+1. Use poll() instead of select() in UNIX. "It becomes problematic on apache2 with
+large number of logfiles. Apache2 calls poll() (when OS supports it), and in that
+case it doesn't need to be recompiled with larger FD_SETSIZE. select() is
+still limited to FD_SETSIZE."
+ Thank Piotr Gackiewicz gacek at intertele.pl for the patch.
+2. Bug fix: "Some requests fail with HTTP 500 and no errorlog entry is generated"
+ Thank Piotr Gackiewicz gacek at intertele.pl for the patch.
+3. Use anonymouse share memeory to make OS X happy.
+ Thank andkjar at obtech.net for the patch.
+4. Add config.m4, mod_fcgid now can be static linked in httpd(See INSTALL.txt)
+
+version 1.09 ( Apr 25th 2006 )
+1. Add configuration DefaultMinClassProcessCount(default 3). Idle fastcgi will not be killed if their count
+ less than DefaultMinClassProcessCount.
+ (Thank Finn Smith, finn at timeghost.net for suggestion)
+2. Add configuration PHP_Fix_Pathinfo_Enable(default 0). If you are using PHP and set cgi.fix_pathinfo=1 in
+ php.ini, please add "PHP_Fix_Pathinfo_Enable 1" in httpd.conf.
+ (Thank Florian Munz, flo at myhosting.de for bug report)?
+3. Split error log whle '\r' or '\n' are inside the text send to "stderr".
+ (Thank frederic at jolliton.com for the patch)
+
+version 1.08 ( Jan 22nd 2006 )
+1. apr_bucket_copy() does not work with buckets from mod_ssl, use apr_bucket_heap_create() instead :(
+ (Thank Grzegorz Sampolski, gs at blink.pl for the bug report)
+2. Wrapper binary can be stored in a different location to the web content (like /usr/local/apache2/fcgi-bin)
+ (Patch from Stephen Grier, s.e.grier at qmul.ac.uk)
+3. Support Apache 2.2 now
+ (Patch from RyoYazaki, yazaki.ryo at mind.co.jp, and many other people report the compiling problem)
+4. Support "\r\n\r\n " HTTP header from CGI
+ (Thank Grzegorz Sampolski, gs at blink.pl for the bug report)
+
version 1.07 ( Nov 10th 2005 )
1. Configuration IPCConnectTimeout, IPCCommTimeout, BusyTimeout can be overwrite in VirtualHost section
(Thank cthulhu at planet-multiplayer.de for the suggestion)
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/mod_fcgid.1.07/INSTALL.txt new/mod_fcgid.1.10/INSTALL.txt
--- old/mod_fcgid.1.07/INSTALL.txt 2005-11-15 03:54:08.000000000 +0100
+++ new/mod_fcgid.1.10/INSTALL.txt 2006-07-03 03:27:37.000000000 +0200
@@ -9,8 +9,16 @@
3. make
4. make install
5. add the following line in httpd.conf
-
LoadModule fcgid_module modules/mod_fcgid.so
+
+
+UNIX (static link to httpd)
+1. copy mod_fcgid to $httpd_src_path/modules
+2. run buildconf in $httpd_src_path
+3. run "configure -enable-fcgid $other_arguments" in $httpd_src_path
+4. make
+5. make install
+6. run "httpd -l" in $httpd_installed_path/bin/ to verify the module is included.
Windows
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/mod_fcgid.1.07/Makefile new/mod_fcgid.1.10/Makefile
--- old/mod_fcgid.1.07/Makefile 2005-11-15 03:54:08.000000000 +0100
+++ new/mod_fcgid.1.10/Makefile 2006-06-01 03:04:30.000000000 +0200
@@ -16,14 +16,8 @@
APACHECTL = apachectl
EXTRA_CFLAGS = -I$(builddir)
-#DEFS=-Dmy_define=my_value
-#INCLUDES=-Imy/include/dir
-#LIBS=-Lmy/lib/dir -lmylib
-
all: local-shared-build
-install: install-modules
-
clean:
-rm -f *.o *.lo *.slo *.la
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/mod_fcgid.1.07/Makefile.in new/mod_fcgid.1.10/Makefile.in
--- old/mod_fcgid.1.07/Makefile.in 1970-01-01 01:00:00.000000000 +0100
+++ new/mod_fcgid.1.10/Makefile.in 2006-05-31 07:47:50.000000000 +0200
@@ -0,0 +1,3 @@
+
+include $(top_srcdir)/build/special.mk
+VPATH = arch/unix/
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/mod_fcgid.1.07/arch/unix/fcgid_proc_unix.c new/mod_fcgid.1.10/arch/unix/fcgid_proc_unix.c
--- old/mod_fcgid.1.07/arch/unix/fcgid_proc_unix.c 2005-11-15 03:54:08.000000000 +0100
+++ new/mod_fcgid.1.10/arch/unix/fcgid_proc_unix.c 2006-06-01 03:16:40.000000000 +0200
@@ -2,6 +2,7 @@
#include
#include
#include /* For TCP_NODELAY */
+#include
#define CORE_PRIVATE
#include "httpd.h"
#include "apr_thread_proc.h"
@@ -9,6 +10,7 @@
#include "apr_portable.h"
#include "apr_pools.h"
#include "apr_network_io.h"
+#include "mpm_common.h"
#include "util_script.h"
#include "unixd.h"
#include "mod_core.h"
@@ -264,10 +266,12 @@
|| (rv =
apr_procattr_dir_set(procattr,
ap_make_dirstr_parent(procnode->proc_pool,
+ (lpszwapper != NULL
+ && lpszwapper[0] !=
+ '\0') ? lpszwapper :
procinfo->cgipath))) !=
APR_SUCCESS
-|| (rv =
- apr_procattr_cmdtype_set(procattr, APR_PROGRAM)) != APR_SUCCESS
+|| (rv = apr_procattr_cmdtype_set(procattr, APR_PROGRAM)) != APR_SUCCESS
|| (rv =
apr_os_file_put(&file, &unix_socket, 0,
procnode->proc_pool)) != APR_SUCCESS
@@ -522,10 +526,9 @@
fcgid_ipc * ipc_handle, const char *buffer,
apr_size_t * size)
{
- fd_set rset;
- struct timeval tv;
int retcode, unix_socket;
fcgid_namedpipe_handle *handle_info;
+ struct pollfd pollfds[1];
handle_info = (fcgid_namedpipe_handle *) ipc_handle->ipc_handle_info;
unix_socket = handle_info->handle_socket;
@@ -544,17 +547,16 @@
}
/* I have to wait a while */
- FD_ZERO(&rset);
- FD_SET(unix_socket, &rset);
+
+ pollfds[0].fd = unix_socket;
+ pollfds[0].events = POLLIN;
do {
- tv.tv_usec = 0;
- tv.tv_sec = ipc_handle->communation_timeout;
- retcode = select(unix_socket + 1, &rset, NULL, NULL, &tv);
- } while (retcode == -1 && APR_STATUS_IS_EINTR(errno));
+ retcode = poll(pollfds, 1, ipc_handle->communation_timeout * 1000);
+ } while (retcode <= 0 && APR_STATUS_IS_EINTR(errno));
if (retcode == -1) {
- ap_log_error(APLOG_MARK, APLOG_INFO, errno,
+ ap_log_error(APLOG_MARK, APLOG_ERR, errno,
main_server,
- "mod_fcgid: select unix domain socket error");
+ "mod_fcgid: poll unix domain socket error");
return errno;
} else if (retcode == 0) {
ap_log_error(APLOG_MARK, APLOG_INFO, 0,
@@ -564,7 +566,6 @@
return APR_ETIMEDOUT;
}
- /* Read again after select() */
do {
if ((retcode = read(unix_socket, (void *) buffer, *size)) > 0) {
*size = retcode;
@@ -589,10 +590,9 @@
struct iovec *vec, int nvec,
int *writecnt)
{
- fd_set wset;
- struct timeval tv;
int retcode, unix_socket;
fcgid_namedpipe_handle *handle_info;
+ struct pollfd pollfds[1];
handle_info = (fcgid_namedpipe_handle *) ipc_handle->ipc_handle_info;
unix_socket = handle_info->handle_socket;
@@ -607,14 +607,12 @@
if (!APR_STATUS_IS_EAGAIN(errno))
return errno;
- /* Select() */
- FD_ZERO(&wset);
- FD_SET(unix_socket, &wset);
+ /* poll() */
+ pollfds[0].fd = unix_socket;
+ pollfds[0].events = POLLOUT;
do {
- tv.tv_usec = 0;
- tv.tv_sec = ipc_handle->communation_timeout;
- retcode = select(unix_socket + 1, NULL, &wset, NULL, &tv);
- } while (retcode == -1 && APR_STATUS_IS_EINTR(errno));
+ retcode = poll(pollfds, 1, ipc_handle->communation_timeout * 1000);
+ } while (retcode <= 0 && APR_STATUS_IS_EINTR(errno));
if (retcode == -1)
return errno;
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/mod_fcgid.1.07/arch/unix/fcgid_proctbl_unix.c new/mod_fcgid.1.10/arch/unix/fcgid_proctbl_unix.c
--- old/mod_fcgid.1.07/arch/unix/fcgid_proctbl_unix.c 2005-11-15 03:54:08.000000000 +0100
+++ new/mod_fcgid.1.10/arch/unix/fcgid_proctbl_unix.c 2006-07-03 03:16:30.000000000 +0200
@@ -24,10 +24,9 @@
fcgid_procnode *ptmpnode = NULL;
int i;
apr_status_t rv;
- char tempname[L_tmpnam];
/* Create share memory */
- if ((rv = apr_shm_create(&g_sharemem, shmem_size, tmpnam(tempname),
+ if ((rv = apr_shm_create(&g_sharemem, shmem_size, NULL,
main_server->process->pconf)) != APR_SUCCESS)
{
ap_log_error(APLOG_MARK, APLOG_EMERG, rv, main_server,
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/mod_fcgid.1.07/config.m4 new/mod_fcgid.1.10/config.m4
--- old/mod_fcgid.1.07/config.m4 1970-01-01 01:00:00.000000000 +0100
+++ new/mod_fcgid.1.10/config.m4 2006-05-31 07:47:39.000000000 +0200
@@ -0,0 +1,22 @@
+dnl APACHE_MODULE(name, helptext[, objects[, structname[, default[, config]]]])
+
+APACHE_MODPATH_INIT(mod_fcgid)
+
+dnl # list of module object files
+fcigd_objs="dnl
+fcgid_bridge.lo dnl
+fcgid_conf.lo dnl
+fcgid_pm_main.lo dnl
+fcgid_protocol.lo dnl
+fcgid_spawn_ctl.lo dnl
+mod_fcgid.lo dnl
+fcgid_proctbl_unix.lo dnl
+fcgid_pm_unix.lo dnl
+fcgid_proc_unix.lo dnl
+fcgid_bucket.lo dnl
+fcgid_filter.lo dnl
+"
+
+APACHE_MODULE(fcgid, [FastCGI support (mod_fcgid)], $fcigd_objs, , no)
+
+APACHE_MODPATH_FINISH
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/mod_fcgid.1.07/fcgid_bridge.c new/mod_fcgid.1.10/fcgid_bridge.c
--- old/mod_fcgid.1.07/fcgid_bridge.c 2005-11-15 03:54:08.000000000 +0100
+++ new/mod_fcgid.1.10/fcgid_bridge.c 2006-06-01 03:21:54.000000000 +0200
@@ -1,5 +1,4 @@
#include "httpd.h"
-#include "ap_mpm.h"
#include "http_request.h"
#include "apr_strings.h"
#include "apr_portable.h"
@@ -14,7 +13,7 @@
#include "fcgid_protocol.h"
#include "fcgid_bucket.h"
#define FCGID_APPLY_TRY_COUNT 2
-#define FCGID_REQUEST_COUNT 3
+#define FCGID_REQUEST_COUNT 32
static int g_variables_inited = 0;
static int g_busy_timeout;
@@ -165,6 +164,7 @@
apr_status_t rv;
int done = 0;
int getLF = 0;
+ int getColon = 0;
while ((dst < dst_end) && !done && !APR_BUCKET_IS_EOS(e)) {
const char *bucket_data;
@@ -194,11 +194,16 @@
if (bucket_data_len == 0)
return 0;
+ /* Base on RFC2616 section 4.2 */
src = bucket_data;
src_end = bucket_data + bucket_data_len;
while ((src < src_end) && (dst < dst_end) && !done) {
- if (getLF && *src != ' ' && *src != '\t') {
+ if (*src == ':')
+ getColon = 1;
+
+ if (getLF && ((*src != ' ' && *src != '\t') || !getColon)) {
done = 1;
+ getColon = 0;
break;
} else if (getLF && (*src == ' ' || *src == '\t')) {
*dst++ = '\r';
@@ -234,7 +239,7 @@
server_rec *main_server = r->server;
fcgid_command fcgi_request;
fcgid_bucket_ctx *bucket_ctx;
- int i, stopping, cond_status;
+ int i, j, cond_status;
apr_status_t rv;
apr_bucket_brigade *brigade_stdout;
char sbuf[MAX_STRING_LEN];
@@ -250,8 +255,12 @@
}
bucket_ctx = apr_pcalloc(request_pool, sizeof(*bucket_ctx));
- if (!bucket_ctx)
+ if (!bucket_ctx) {
+ ap_log_error(APLOG_MARK, APLOG_WARNING, rv, r->server,
+ "mod_fcgid: apr_calloc of %d bytes failed in handle_request function",
+ sizeof(*bucket_ctx));
return HTTP_INTERNAL_SERVER_ERROR;
+ }
bucket_ctx->ipc.connect_timeout = g_connect_timeout;
bucket_ctx->ipc.communation_timeout = g_comm_timeout;
bucket_ctx->ipc.request = r;
@@ -259,10 +268,9 @@
bucket_ctx_cleanup, apr_pool_cleanup_null);
/* Try to get a connected ipc handle */
- stopping = 0;
- for (i = 0; i < FCGID_REQUEST_COUNT && !stopping; i++) {
+ for (i = 0; i < FCGID_REQUEST_COUNT; i++) {
/* Apply a free process slot, send a spawn request if I can't get one */
- for (i = 0; i < FCGID_APPLY_TRY_COUNT && !stopping; i++) {
+ for (j = 0; j < FCGID_APPLY_TRY_COUNT; j++) {
int mpm_state = 0;
apr_ino_t inode =
wrapper_conf ? wrapper_conf->inode : r->finfo.inode;
@@ -281,15 +289,15 @@
if (bucket_ctx->procnode)
break;
- /* Send a spawn request if I can't get a process slot */
- procmgr_post_spawn_cmd(&fcgi_request, r);
+ apr_sleep(apr_time_from_sec(1));
- /* Is it stopping? */
- if (ap_mpm_query(AP_MPMQ_MPM_STATE, &mpm_state) == APR_SUCCESS
- && mpm_state == AP_MPMQ_STOPPING) {
- stopping = 1;
+ bucket_ctx->procnode =
+ apply_free_procnode(r->server, &fcgi_request);
+ if (bucket_ctx->procnode)
break;
- }
+
+ /* Send a spawn request if I can't get a process slot */
+ procmgr_post_spawn_cmd(&fcgi_request, r);
}
/* Connect to the fastcgi server */
@@ -309,7 +317,7 @@
/* Now I get a connected ipc handle */
if (!bucket_ctx->procnode) {
- ap_log_error(APLOG_MARK, APLOG_INFO, 0, r->server,
+ ap_log_error(APLOG_MARK, APLOG_WARNING, 0, r->server,
"mod_fcgid: can't apply process slot for %s", argv0);
return HTTP_SERVICE_UNAVAILABLE;
}
@@ -320,7 +328,7 @@
if ((rv =
proc_write_ipc(main_server, &bucket_ctx->ipc,
output_brigade)) != APR_SUCCESS) {
- ap_log_error(APLOG_MARK, APLOG_INFO, rv, r->server,
+ ap_log_error(APLOG_MARK, APLOG_WARNING, rv, r->server,
"mod_fcgid: write data to fastcgi server error");
bucket_ctx->has_error = 1;
return HTTP_INTERNAL_SERVER_ERROR;
@@ -329,8 +337,11 @@
/* Create brigade */
brigade_stdout =
apr_brigade_create(request_pool, r->connection->bucket_alloc);
- if (!brigade_stdout)
+ if (!brigade_stdout) {
+ ap_log_error(APLOG_MARK, APLOG_WARNING, rv, r->server,
+ "mod_fcgid: apr_brigade_create failed in handle_request function");
return HTTP_INTERNAL_SERVER_ERROR;
+ }
APR_BRIGADE_INSERT_TAIL(brigade_stdout,
ap_bucket_fcgid_header_create(r->connection->
bucket_alloc,
@@ -371,6 +382,8 @@
if ((rv =
ap_pass_brigade(r->output_filters,
brigade_stdout)) != APR_SUCCESS) {
+ ap_log_error(APLOG_MARK, APLOG_WARNING, rv, r->server,
+ "mod_fcgid: ap_pass_brigade failed in handle_request function");
return HTTP_INTERNAL_SERVER_ERROR;
}
@@ -431,7 +444,7 @@
AP_MODE_READBYTES,
APR_BLOCK_READ,
HUGE_STRING_LEN)) != APR_SUCCESS) {
- ap_log_error(APLOG_MARK, APLOG_INFO, rv,
+ ap_log_error(APLOG_MARK, APLOG_WARNING, rv,
main_server,
"mod_fcgid: can't get data from http client");
apr_brigade_destroy(output_brigade);
@@ -474,7 +487,17 @@
sizeof(*stdin_request_header),
apr_bucket_free,
r->connection->bucket_alloc);
- apr_bucket_copy(bucket_input, &bucket_stdin);
+ if (APR_BUCKET_IS_HEAP(bucket_input))
+ apr_bucket_copy(bucket_input, &bucket_stdin);
+ else {
+ /* mod_ssl have a bug? */
+ char *pcopydata =
+ apr_bucket_alloc(len, r->connection->bucket_alloc);
+ memcpy(pcopydata, data, len);
+ bucket_stdin =
+ apr_bucket_heap_create(pcopydata, len, apr_bucket_free,
+ r->connection->bucket_alloc);
+ }
if (!stdin_request_header || !bucket_header || !bucket_stdin
|| !init_header(FCGI_STDIN, 1, len, 0,
stdin_request_header)) {
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/mod_fcgid.1.07/fcgid_bucket.c new/mod_fcgid.1.10/fcgid_bucket.c
--- old/mod_fcgid.1.07/fcgid_bucket.c 2005-11-15 03:54:08.000000000 +0100
+++ new/mod_fcgid.1.10/fcgid_bucket.c 2006-06-01 03:16:40.000000000 +0200
@@ -98,6 +98,7 @@
/* Handle FCGI_STDERR body, write the content to log file */
if (header.type == FCGI_STDERR) {
char *logbuf = apr_bucket_alloc(APR_BUCKET_BUFF_SIZE, b->list);
+ char *line;
if (!logbuf)
return APR_ENOMEM;
@@ -127,8 +128,22 @@
}
/* Now I get the log data, write log and release the buffer */
- ap_log_error(APLOG_MARK, APLOG_WARNING, 0, main_server,
- "mod_fcgid: stderr: %s", logbuf);
+ line = logbuf;
+ while (*line) {
+ char *end = strpbrk(line, "\r\n");
+
+ if (end != NULL) {
+ *end = '\0';
+ }
+ ap_log_error(APLOG_MARK, APLOG_WARNING, 0, main_server,
+ "mod_fcgid: stderr: %s", line);
+ if (end == NULL) {
+ break;
+ }
+ ++end;
+ line = end + strspn(end, "\r\n");
+ }
+
apr_bucket_free(logbuf);
}
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/mod_fcgid.1.07/fcgid_conf.c new/mod_fcgid.1.10/fcgid_conf.c
--- old/mod_fcgid.1.07/fcgid_conf.c 2005-11-15 03:54:08.000000000 +0100
+++ new/mod_fcgid.1.10/fcgid_conf.c 2006-06-01 03:16:40.000000000 +0200
@@ -21,8 +21,9 @@
#define DEFAULT_TERMINATION_SCORE 2
#define DEFAULT_MAX_PROCESS_COUNT 1000
#define DEFAULT_MAX_CLASS_PROCESS_COUNT 100
-#define DEFAULT_IPC_CONNECT_TIMEOUT 2
-#define DEFAULT_IPC_COMM_TIMEOUT 5
+#define DEFAULT_MIN_CLASS_PROCESS_COUNT 3
+#define DEFAULT_IPC_CONNECT_TIMEOUT 3
+#define DEFAULT_IPC_COMM_TIMEOUT 20
#define DEFAULT_OUTPUT_BUFFERSIZE 65536
void *create_fcgid_server_config(apr_pool_t * p, server_rec * s)
@@ -41,8 +42,8 @@
config->spawn_score = DEFAULT_SPAWN_SCORE;
config->spawnscore_uplimit = DEFAULT_SPAWNSOCRE_UPLIMIT;
config->termination_score = DEFAULT_TERMINATION_SCORE;
- config->default_max_class_process_count =
- DEFAULT_MAX_CLASS_PROCESS_COUNT;
+ config->max_class_process_count = DEFAULT_MAX_CLASS_PROCESS_COUNT;
+ config->min_class_process_count = DEFAULT_MIN_CLASS_PROCESS_COUNT;
config->max_process_count = DEFAULT_MAX_PROCESS_COUNT;
config->output_buffersize = DEFAULT_OUTPUT_BUFFERSIZE;
config->ipc_comm_timeout = DEFAULT_IPC_COMM_TIMEOUT;
@@ -51,6 +52,7 @@
config->ipc_connect_timeout_overwrite = 0;
config->busy_timeout = DEFAULT_BUSY_TIMEOUT;
config->busy_timeout_overwrite = 0;
+ config->php_fix_pathinfo_enable = 0;
return config;
}
@@ -319,22 +321,57 @@
return config ? config->output_buffersize : DEFAULT_OUTPUT_BUFFERSIZE;
}
-const char *set_default_max_class_process(cmd_parms * cmd, void *dummy,
- const char *arg)
+const char *set_max_class_process(cmd_parms * cmd, void *dummy,
+ const char *arg)
{
server_rec *s = cmd->server;
fcgid_server_conf *config =
ap_get_module_config(s->module_config, &fcgid_module);
- config->default_max_class_process_count = atol(arg);
+ config->max_class_process_count = atol(arg);
return NULL;
}
-int get_default_max_class_process(server_rec * s)
+int get_max_class_process(server_rec * s)
{
fcgid_server_conf *config =
ap_get_module_config(s->module_config, &fcgid_module);
return config ? config->
- default_max_class_process_count : DEFAULT_MAX_CLASS_PROCESS_COUNT;
+ max_class_process_count : DEFAULT_MAX_CLASS_PROCESS_COUNT;
+}
+
+const char *set_min_class_process(cmd_parms * cmd, void *dummy,
+ const char *arg)
+{
+ server_rec *s = cmd->server;
+ fcgid_server_conf *config =
+ ap_get_module_config(s->module_config, &fcgid_module);
+ config->min_class_process_count = atol(arg);
+ return NULL;
+}
+
+int get_min_class_process(server_rec * s)
+{
+ fcgid_server_conf *config =
+ ap_get_module_config(s->module_config, &fcgid_module);
+ return config ? config->
+ min_class_process_count : DEFAULT_MIN_CLASS_PROCESS_COUNT;
+}
+
+const char *set_php_fix_pathinfo_enable(cmd_parms * cmd, void *dummy,
+ const char *arg)
+{
+ server_rec *s = cmd->server;
+ fcgid_server_conf *config =
+ ap_get_module_config(s->module_config, &fcgid_module);
+ config->php_fix_pathinfo_enable = atol(arg);
+ return NULL;
+}
+
+int get_php_fix_pathinfo_enable(server_rec * s)
+{
+ fcgid_server_conf *config =
+ ap_get_module_config(s->module_config, &fcgid_module);
+ return config ? config->php_fix_pathinfo_enable : 0;
}
const char *set_ipc_connect_timeout(cmd_parms * cmd, void *dummy,
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/mod_fcgid.1.07/fcgid_conf.h new/mod_fcgid.1.10/fcgid_conf.h
--- old/mod_fcgid.1.07/fcgid_conf.h 2005-11-15 03:54:08.000000000 +0100
+++ new/mod_fcgid.1.10/fcgid_conf.h 2006-06-01 03:16:40.000000000 +0200
@@ -22,7 +22,8 @@
int spawn_score;
int termination_score;
int max_process_count;
- int default_max_class_process_count;
+ int max_class_process_count;
+ int min_class_process_count;
int output_buffersize;
apr_table_t *default_init_env;
@@ -32,6 +33,8 @@
int ipc_comm_timeout_overwrite;
int busy_timeout;
int busy_timeout_overwrite;
+
+ int php_fix_pathinfo_enable;
} fcgid_server_conf;
typedef struct {
@@ -89,9 +92,13 @@
const char *set_max_process(cmd_parms * cmd, void *dummy, const char *arg);
int get_max_process(server_rec * s);
-const char *set_default_max_class_process(cmd_parms * cmd, void *dummy,
- const char *arg);
-int get_default_max_class_process(server_rec * s);
+const char *set_max_class_process(cmd_parms * cmd, void *dummy,
+ const char *arg);
+int get_max_class_process(server_rec * s);
+
+const char *set_min_class_process(cmd_parms * cmd, void *dummy,
+ const char *arg);
+int get_min_class_process(server_rec * s);
const char *set_ipc_connect_timeout(cmd_parms * cmd, void *dummy,
const char *arg);
@@ -114,4 +121,8 @@
const char *wrapper, const char *extension);
fcgid_wrapper_conf *get_wrapper_info(const char *cgipath, request_rec * r);
+const char *set_php_fix_pathinfo_enable(cmd_parms * cmd, void *dummy,
+ const char *arg);
+int get_php_fix_pathinfo_enable(server_rec * s);
+
#endif
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/mod_fcgid.1.07/fcgid_pm_main.c new/mod_fcgid.1.10/fcgid_pm_main.c
--- old/mod_fcgid.1.07/fcgid_pm_main.c 2005-11-15 03:54:08.000000000 +0100
+++ new/mod_fcgid.1.10/fcgid_pm_main.c 2006-06-01 03:16:40.000000000 +0200
@@ -57,10 +57,11 @@
next_node = &proc_table[current_node->next_index];
last_active_time = current_node->last_active_time;
start_time = current_node->start_time;
- if (apr_time_sec(now) - apr_time_sec(last_active_time) >
- g_idle_timeout
- || apr_time_sec(now) - apr_time_sec(start_time) >
- g_proc_lifetime) {
+ if ((apr_time_sec(now) - apr_time_sec(last_active_time) >
+ g_idle_timeout
+ || apr_time_sec(now) - apr_time_sec(start_time) >
+ g_proc_lifetime)
+ && is_kill_allowed(current_node)) {
/* Set die reason for log */
if (apr_time_sec(now) - apr_time_sec(last_active_time) >
g_idle_timeout)
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/mod_fcgid.1.07/fcgid_spawn_ctl.c new/mod_fcgid.1.10/fcgid_spawn_ctl.c
--- old/mod_fcgid.1.07/fcgid_spawn_ctl.c 2005-11-15 03:54:08.000000000 +0100
+++ new/mod_fcgid.1.10/fcgid_spawn_ctl.c 2006-06-01 03:16:40.000000000 +0200
@@ -23,6 +23,7 @@
static int g_max_process;
static int g_total_process;
static int g_max_class_process;
+static int g_min_class_process;
static void
register_life_death(server_rec * main_server,
@@ -109,7 +110,8 @@
g_spawn_score = get_spawn_score(main_server);
g_score_uplimit = get_spawnscore_uplimit(main_server);
g_max_process = get_max_process(main_server);
- g_max_class_process = get_default_max_class_process(main_server);
+ g_max_class_process = get_max_class_process(main_server);
+ g_min_class_process = get_min_class_process(main_server);
}
void
@@ -197,3 +199,32 @@
return 1;
}
}
+
+int is_kill_allowed(fcgid_procnode * procnode)
+{
+ struct fcgid_stat_node *previous_node, *current_node;
+
+ if (!g_stat_pool || !procnode)
+ return;
+
+ /* Can I find the node base on inode, device id and share group id? */
+ previous_node = g_stat_list_header;
+ for (current_node = previous_node;
+ current_node != NULL; current_node = current_node->next) {
+ if (current_node->inode == procnode->inode
+ && current_node->deviceid == procnode->deviceid
+ && current_node->share_grp_id == procnode->share_grp_id
+ && current_node->uid == procnode->uid
+ && current_node->gid == procnode->gid)
+ break;
+ previous_node = current_node;
+ }
+
+ if (current_node) {
+ /* Found the node */
+ if (current_node->process_counter <= g_min_class_process)
+ return 0;
+ }
+
+ return 1;
+}
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/mod_fcgid.1.07/fcgid_spawn_ctl.h new/mod_fcgid.1.10/fcgid_spawn_ctl.h
--- old/mod_fcgid.1.07/fcgid_spawn_ctl.h 2005-11-15 03:54:08.000000000 +0100
+++ new/mod_fcgid.1.10/fcgid_spawn_ctl.h 2006-06-01 03:16:40.000000000 +0200
@@ -8,5 +8,6 @@
fcgid_procnode * procnode);
void register_spawn(server_rec * main_server, fcgid_procnode * procnode);
int is_spawn_allowed(server_rec * main_server, fcgid_command * command);
+int is_kill_allowed(fcgid_procnode * procnode);
#endif
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/mod_fcgid.1.07/mod_fcgid.c new/mod_fcgid.1.10/mod_fcgid.c
--- old/mod_fcgid.1.07/mod_fcgid.c 2005-11-15 03:54:08.000000000 +0100
+++ new/mod_fcgid.1.10/mod_fcgid.c 2006-04-26 03:36:10.000000000 +0200
@@ -17,6 +17,7 @@
module AP_MODULE_DECLARE_DATA fcgid_module;
static APR_OPTIONAL_FN_TYPE(ap_cgi_build_command) * cgi_build_command;
static ap_filter_rec_t *fcgid_filter_handle;
+static int g_php_fix_pathinfo_enable = 0;
/* Stolen from mod_cgi.c */
/* KLUDGE --- for back-combatibility, we don't have to check ExecCGI
@@ -80,6 +81,25 @@
/* End of stolen */
+static void fcgid_add_cgi_vars(request_rec * r)
+{
+ /* Work around cgi.fix_pathinfo = 1 in php.ini */
+ if (g_php_fix_pathinfo_enable) {
+ char *merge_path;
+ apr_table_t *e = r->subprocess_env;
+
+ /* "DOCUMENT_ROOT"/"SCRIPT_NAME" -> "SCRIPT_NAME" */
+ const char *doc_root = apr_table_get(e, "DOCUMENT_ROOT");
+ const char *script_name = apr_table_get(e, "SCRIPT_NAME");
+
+ if (doc_root && script_name
+ && apr_filepath_merge(&merge_path, doc_root, script_name, 0,
+ r->pool) == APR_SUCCESS) {
+ apr_table_setn(e, "SCRIPT_NAME", merge_path);
+ }
+ }
+}
+
static int fcgid_handler(request_rec * r)
{
cgi_exec_info_t e_info;
@@ -150,6 +170,7 @@
ap_add_common_vars(r);
ap_add_cgi_vars(r);
+ fcgid_add_cgi_vars(r);
/* Insert output filter */
ap_add_output_filter_handle(fcgid_filter_handle, NULL, r,
@@ -187,6 +208,8 @@
apr_status_t rv;
void *dummy = NULL;
+ g_php_fix_pathinfo_enable = get_php_fix_pathinfo_enable(main_server);
+
/* Initialize process manager only once */
apr_pool_userdata_get(&dummy, userdata_key,
main_server->process->pool);
@@ -262,9 +285,13 @@
AP_INIT_TAKE1("MaxProcessCount", set_max_process, NULL, RSRC_CONF,
"Max total process count"),
AP_INIT_TAKE1("DefaultMaxClassProcessCount",
- set_default_max_class_process,
+ set_max_class_process,
NULL, RSRC_CONF,
"Max process count of one class of fastcgi application"),
+ AP_INIT_TAKE1("DefaultMinClassProcessCount",
+ set_min_class_process,
+ NULL, RSRC_CONF,
+ "Min process count of one class of fastcgi application"),
AP_INIT_TAKE1("OutputBufferSize", set_output_buffersize, NULL,
RSRC_CONF,
"CGI output buffer size"),
@@ -277,6 +304,10 @@
"an environment variable name and optional value to pass to FastCGI."),
AP_INIT_TAKE12("FCGIWrapper", set_wrapper_config, NULL, ACCESS_CONF,
"The CGI wrapper setting"),
+ AP_INIT_TAKE1("PHP_Fix_Pathinfo_Enable",
+ set_php_fix_pathinfo_enable,
+ NULL, RSRC_CONF,
+ "Set 1, if cgi.fix_pathinfo=1 in php.ini"),
{NULL}
};
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/mod_fcgid.1.07/mod_fcgid.dsp new/mod_fcgid.1.10/mod_fcgid.dsp
--- old/mod_fcgid.1.07/mod_fcgid.dsp 1970-01-01 01:00:00.000000000 +0100
+++ new/mod_fcgid.1.10/mod_fcgid.dsp 2006-04-26 03:36:10.000000000 +0200
@@ -0,0 +1,209 @@
+# Microsoft Developer Studio Project File - Name="mod_fcgid" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=mod_fcgid - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "mod_fcgid.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "mod_fcgid.mak" CFG="mod_fcgid - Win32 Release"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "mod_fcgid - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "mod_fcgid - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "mod_fcgid - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /FD /c
+# ADD CPP /nologo /MD /W3 /Zi /O2 /I "../../include" /I "../../srclib/apr/include" /I "../../srclib/apr-util/include" /I "./" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /Fd"Release\mod_fcgid_src" /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib /nologo /subsystem:windows /dll /machine:I386 /out:"Release/mod_fcgid.so" /base:@..\..\os\win32\BaseAddr.ref,mod_fcgid.so
+# ADD LINK32 kernel32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /out:"Release/mod_fcgid.so" /base:@..\..\os\win32\BaseAddr.ref,mod_fcgid.so /opt:ref
+
+!ELSEIF "$(CFG)" == "mod_fcgid - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FD /c
+# ADD CPP /nologo /MDd /W3 /GX /Zi /Od /I "../../include" /I "../../srclib/apr/include" /I "../../srclib/apr-util/include" /I "./" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_POSIX_" /Fd"Debug\mod_fcgid_src" /FD /c
+# ADD BASE MTL /nologo /D "_DEBUG" /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib /nologo /subsystem:windows /dll /incremental:no /debug /machine:I386 /out:"Debug/mod_fcgid.so" /base:@..\..\os\win32\BaseAddr.ref,mod_fcgid.so
+# ADD LINK32 kernel32.lib User32.lib /nologo /subsystem:windows /dll /incremental:no /debug /machine:I386 /out:"g:/apache2/modules/mod_fcgid.so"
+# SUBTRACT LINK32 /pdb:none
+
+!ENDIF
+
+# Begin Target
+
+# Name "mod_fcgid - Win32 Release"
+# Name "mod_fcgid - Win32 Debug"
+# Begin Source File
+
+SOURCE=.\fcgid_bridge.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\fcgid_bridge.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\fcgid_bucket.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\fcgid_bucket.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\fcgid_conf.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\fcgid_conf.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\fcgid_filter.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\fcgid_filter.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\fcgid_global.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\fcgid_pm.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\fcgid_pm_main.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\fcgid_pm_main.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\arch\win32\fcgid_pm_win.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\fcgid_proc.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\arch\win32\fcgid_proc_win.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\fcgid_proctbl.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\arch\win32\fcgid_proctbl_win.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\fcgid_protocol.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\fcgid_spawn_ctl.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\fcgid_spawn_ctl.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\mod_fcgid.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\mod_fcgid.rc
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\build\win32\win32ver.awk
+
+!IF "$(CFG)" == "mod_fcgid - Win32 Release"
+
+# PROP Ignore_Default_Tool 1
+# Begin Custom Build - Creating Version Resource
+InputPath=..\..\build\win32\win32ver.awk
+
+".\mod_fcgid.rc" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ awk -f ../../build/win32/win32ver.awk mod_fcgid.so "cgi_module for Apache" ../../include/ap_release.h > .\mod_fcgid.rc
+
+# End Custom Build
+
+!ELSEIF "$(CFG)" == "mod_fcgid - Win32 Debug"
+
+# PROP Ignore_Default_Tool 1
+# Begin Custom Build - Creating Version Resource
+InputPath=..\..\build\win32\win32ver.awk
+
+".\mod_fcgid.rc" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
+ awk -f ../../build/win32/win32ver.awk mod_fcgid.so "cgi_module for Apache" ../../include/ap_release.h > .\mod_fcgid.rc
+
+# End Custom Build
+
+!ENDIF
+
+# End Source File
+# End Target
+# End Project
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
---------------------------------------------------------------------
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org