![](https://seccdn.libravatar.org/avatar/af22e20b6884acbc89be6d7736c43e92.jpg?s=120&d=mm&r=g)
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 @@ -<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN" - "http://www.w3.org/TR/html4/loose.dtd"> - -<html> +<html xmlns:v="urn:schemas-microsoft-com:vml" +xmlns:o="urn:schemas-microsoft-com:office:office" +xmlns:w="urn:schemas-microsoft-com:office:word" +xmlns:st1="urn:schemas-microsoft-com:office:smarttags" +xmlns="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"> - +<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags" + name="chmetcnv"/> +<!--[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><o:p></o:p></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: <a + href="http://www.gnu.org/licenses/gpl.html">GPL</a> </span></p> + <p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p> + <p class=MsoNormal><span lang=EN-US>version 1.10 ( Jul 3rd 2006 )<o:p></o:p></span></p> + <p class=MsoNormal><span lang=EN-US>1. Use poll() instead of select() in + UNIX. "It becomes problematic on apache2 with<o:p></o:p></span></p> + <p class=MsoNormal><span lang=EN-US>large number of logfiles. Apache2 calls + poll() (when OS supports it), and in that<o:p></o:p></span></p> + <p class=MsoNormal><span lang=EN-US>case it doesn't need to be recompiled + with larger FD_SETSIZE. select() is<o:p></o:p></span></p> + <p class=MsoNormal><span lang=EN-US>still limited to FD_SETSIZE."<o:p></o:p></span></p> + <p class=MsoNormal><span lang=EN-US><span + style='mso-spacerun:yes'> + </span>Thank Piotr Gackiewicz gacek at intertele.pl for the patch.<o:p></o:p></span></p> + <p class=MsoNormal><span lang=EN-US>2. Bug fix: "Some requests fail with + HTTP 500 and no errorlog entry is generated"<o:p></o:p></span></p> + <p class=MsoNormal><span lang=EN-US><span style='mso-spacerun:yes'> + </span><span + style='mso-spacerun:yes'> </span>Thank + Piotr Gackiewicz gacek at intertele.pl for the patch.<o:p></o:p></span></p> + <p class=MsoNormal><span lang=EN-US>3. Use anonymouse share memeory to make + OS X happy.<o:p></o:p></span></p> + <p class=MsoNormal><span lang=EN-US><span + style='mso-spacerun:yes'> + </span>Thank andkjar at obtech.net for the patch.<o:p></o:p></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): <a + href="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): <a + href="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><o:p> </o:p></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=<st1:chmetcnv UnitName="in" SourceValue="1" + HasSpace="True" Negative="False" NumberType="1" TCSC="0" w:st="on">1 in</st1:chmetcnv> + 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): <a + href="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): <a + href="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): <a + href="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): <a + href="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): <a + href="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): <a + href="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): <a + href="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): <a + href="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): <a + href="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): <a + href="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): <a + href="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): <a + href="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): <a + href="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): <a + href="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): <a + href="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): <a + href="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): <a + href="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): <a + href="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): <a + href="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): <a + href="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): <a + href="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): <a + href="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): <a + href="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): <a + href="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): <a + href="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): <a + href="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): <a + href="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): <a + href="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): <a + href="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): <a + href="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): <a + href="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): <a + href="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): <a + href="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): <a + href="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): <a + href="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): <a + href="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): <a + href="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): <a + href="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): <a + href="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): <a + href="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): <a + href="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><o:p> </o:p></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 @@ -<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN" - "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 <sys/un.h> #include <sys/types.h> #include <netinet/tcp.h> /* For TCP_NODELAY */ +#include <sys/poll.h> #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