                                                         -*- coding: utf-8 -*-
Changes with mod_fcgid 2.3.2

  *) Fix a make install DESTDIR problem handling the reference manual and
     potentially other files (specific to 2.3.1).
     [Paul Howarth <paul city-fan.org>]

  *) Fix a mod_fcgid 2.3.1 failure with <sys/mutex.h> when building for
     httpd 2.0.x on some platforms.  [Paul Howarth <paul city-fan.org>]

  *) Merge mod_fcgid per-directory directives so that they can be inherited
     or overridden within other containers as expected.  Affected directives:
     FCGIDAccessChecker, FCGIDAccessCheckerAuthoritative, FCGIDAuthenticator,
     FCGIDAuthenticatorAuthoritative, FCGIDAuthorizer,
     FCGIDAuthorizerAuthoritative, and FCGIDWrapper.  [Jeff Trawick]

  *) Termination of idle processes after inactivity timeout can now be 
     disabled by setting FCGIDIdleTimeout to 0.  Termination of idle 
     processes based on the process lifetime can now be disabled by setting
     FCGIDProcessLifeTime to 0.  FCGIDMaxRequestsPerProcess now accepts 0
     for unlimited.  [Ricardo Cantu <ricardo smartcsc.com>]

  *) All directives have been renamed in order to use a common prefix "FCGID".
     Underscores in directive names have been eliminated in favor of
     CamelCase. The old directive names will still work but are deprecated.
     To fix your configuration you can use the sed script tools/fixconf.sed.
     The following tables contains old and new directive names.

     Old Name                           New Name
     ...................................................................
     BusyScanInterval                   FCGIDBusyScanInterval
     BusyTimeout                        FCGIDBusyTimeout
     DefaultInitEnv                     FCGIDDefaultInitEnv
     DefaultMaxClassProcessCount        FCGIDDefaultMaxClassProcessCount
     DefaultMinClassProcessCount        FCGIDDefaultMinClassProcessCount
     ErrorScanInterval                  FCGIDErrorScanInterval
     FastCgiAccessChecker               FCGIDAccessChecker
     FastCgiAccessCheckerAuthoritative  FCGIDAccessCheckerAuthoritative
     FastCgiAuthenticator               FCGIDAuthenticator
     FastCgiAuthenticatorAuthoritative  FCGIDAuthenticatorAuthoritative
     FastCgiAuthorizer                  FCGIDAuthorizer
     FastCgiAuthorizerAuthoritative     FCGIDAuthorizerAuthoritative
     FCGIWrapper                        FCGIDWrapper
     IdleScanInterval                   FCGIDIdleScanInterval
     IdleTimeout                        FCGIDIdleTimeout
     IPCCommTimeout                     FCGIDIPCCommTimeout
     IPCConnectTimeout                  FCGIDIPCConnectTimeout
     MaxProcessCount                    FCGIDMaxProcessCount
     MaxRequestInMem                    FCGIDMaxRequestInMem
     MaxRequestLen                      FCGIDMaxRequestLen
     MaxRequestsPerProcess              FCGIDMaxRequestsPerProcess
     OutputBufferSize                   FCGIDOutputBufferSize
     PassHeader                         FCGIDPassHeader
     PHP_Fix_Pathinfo_Enable            FCGIDPHPFixPathinfoEnable
     ProcessLifeTime                    FCGIDProcessLifeTime
     SharememPath                       FCGIDSharememPath
     SocketPath                         FCGIDSocketPath
     SpawnScore                         FCGIDSpawnScore
     SpawnScoreUpLimit                  FCGIDSpawnScoreUpLimit
     TerminationScore                   FCGIDTerminationScore
     TimeScore                          FCGIDTimeScore
     ZombieScanInterval                 FCGIDZombieScanInterval

  *) Separate classes by virtual host also on Windows.  [Rainer Jung]

  *) Log client IP address with many more error log messages.  [Jeff Trawick]

  *) Fix basic implementation of FCGIDMaxRequestInMem and FCGIDMaxRequestLen
     directives.  [Jeff Trawick]

  *) Merge mod_fcgid server config/virtual host directives so that they can
     be inherited or overridden within a virtual host as expected.  Affected
     directives: FCGIDIPCCommTimeout, FCGIDIPCConnectTimeout,
     FCGIDMaxRequestInMem, FCGIDMaxRequestLen, FCGIDMaxRequestsPerProcess,
     FCGIDOutputBufferSize.  [Jeff Trawick]

  *) Use the virtual host settings for the request being processed instead
     of those of the first FastCGI request handled by this httpd child process.
     Affected directives: FCGIDBusyTimeout, FCGIDIPCCommTimeout,
     FCGIDIPCConnectTimeout, FCGIDMaxRequestsPerProcess, and FCGIDOutputBufferSize.
     [Jeff Trawick]

  *) The following directives are no longer allowed in a virtual host
     context: FCGIDBusyScanInterval, FCGIDBusyTimeout,
     FCGIDDefaultMaxClassProcessCount, FCGIDDefaultMinProcessCount,
     FCGIDErrorScanInterval, FCGIDIdleScanInterval, FCGIDIdleTimeout,
     FCGIDMaxProcessCount, FCGIDPHPFixPathinfo_Enable, FCGIDProcessLifetime,
     FCGIDSharememPath, FCGIDSocketPath, FCGIDSpawnScore,
     FCGIDSpawnScoreUpLimit, FCGIDTerminationScore, FCGIDTimeScore, and 
     FCGIDZombieScanInterval.  They were allowed but ignored in previous
     releases.  [Jeff Trawick]

  *) Add an optional flag "virtual" to FCGIDWrapper.
     If virtual is set, the URLs passed to the wrapper are not
     checked, whether they resolve to a file.  [Rainer Jung]

  *) Make the second argument (suffix) for FCGIDWrapper optional.
     A wrapper defined without a suffix applies to all URLs, unless
     there is another more specific wrapper with a suffix.  [Rainer Jung]

Changes with mod_fcgid 2.3.1

  *) Suppress "need AuthType to note auth failure" error-level messages when a
     FastCGIAccessChecker fails without any other kind of authentication 
     (Basic, Digest) configured.  [Eric Covener]
  
  *) Complete the unix port to 2.3-dev trunk.  [William Rowe]

  *) Provide a default, mandatory environment as with mod_cgi (with the
     inclusion of LD_LIBRARY_PATH or similar variables on other platforms),
     unless overridden by DefaultInitEnv.  [William Rowe]

  *) Handle DefaultInitEnv for case-insensitive platforms by forcing the env
     variable names to uppercase on Win32, OS2 and Netware.  [William Rowe]

  *) Don't try to set the ownership of the socket directory unless running
     as root and the directory was just created.  This allows the default
     httpd.conf (with some daemon User/Group) to be used by non-root.
     [Jeff Trawick]

  *) Fix formatting of several messages, including the oft-seen "mod_fcgid: 
     Can't create shared memory for size %zu byte".  [Jeff Trawick]

  *) Fix declared names of FastCgiAuthenticator and FastCgiAuthenticator-
     Authoritative directives, allowing them to be used.  [Ulf Haueisen
     <ulf dvlp.de>]

  *) Fix vhost-specific DefaultInitEnv settings.  Previously, when setting 
     multiple virtual hosts with the same SuexecUserGroup user and group, the
     process manager use the same process pool for both virtual hosts. This 
     means if one virtual host has a DefaultInitEnv and the other has 
     different values set, a fastcgi request from any of these virtual host
     can go to the same processes, which is inconsistent (a request from 
     virtualhost a with DefaultInitEnv VAL "a", can go to a process spawned 
     with virtualhost b with DefaultInitEnv VAL "b" set).  [Gabriel Barazer
     <gabriel oxeva.fr>]

Note: A log of changes released before moving to the ASF (releases 2.2 and 
earlier) is in the file ChangeLog.
