Changes with Apache 1.3b5 *) Preserve the content encoding given by the AddEncoding directive when the client doesn't otherwise specify an encoding. [Ronald Tschalaer ] *) WIN32: Append a '.' to extensionless executables in spawn[lv]e* replacements, which makes them work. [Sam Robb , Ben Laurie] *) Sort out problems with canonical filename handling happening too late. [Dean Gaudet, Ben Laurie] Changes with Apache 1.3b4 *) The module structure was modified to include a *dynamic_load_handle in the STANDARD_MODULE_STUFF portion, and the MODULE_MAGIC_NUMBER has been bumped accordingly. [Paul Sutton] *) All BrowserMatch directives mentioned in htdocs/manual/known_client_problems.html are in the default configuration files. [Lars Eilebrecht] *) MiNT port update. [Jan Paul Schmidt] *) HTTP/1.1 requires x-gzip and gzip encodings be treated equivalent, similarly for x-compress and compress. Apache now ignores a leading x- when comparing encodings. It also preserves the encoding the client requests (for example if it requests x-gzip, then Apache will respond with x-gzip in the Content-Encoding header). [Ronald Tschalaer ] PR#1772 *) Fix a memory leak on keep-alive connections. [Igor Tatarinov] *) Added mod_so module to support dynamic loading of modules on Unix (like mod_dld for Win32). This replaces mod_dld.c. Use SharedModule instead of AddModule in Configuration to build shared modules [Sameer Parekh, Paul Sutton] *) Minor cleanups to r->finfo handling in some modules. [Dean Gaudet] *) Abstract read()/write() out of buff.c to the libap library. Makes it easier to add other types of IO code such as SFIO. [Randy Terbush] *) Generalize default_port manipulations to make support of different protocols easier. [Ben Laurie, Randy Terbush] *) There are many cases where users do not want Apache to form self-referential urls using the "canonical" ServerName and Port. The new UseCanonicalName directive (default on), if set to off will cause Apache to use the client-supplied hostname and port. [Michael Douglass , Dean Gaudet] PR#315, 459, 485, 1433 *) Yet another rearrangement of the source tree.. now all the common header files are in the src/include directory. The -Imain -Iap references in Makefiles have been changed to the simpler -Iinclude instead. In addition to simplifying the build a little bit, this also makes it clear when a module is referencing something in a other than kosher manner (e.g., the proxy including mod_mime.h). Module-private header files (the proxy, mod_mime, the regex library, and mod_rewrite) have not been moved to src/include; nor have the OS-abstraction files. [Ken Coar] *) Fix a bug where r->hostname didn't have the :port stripped from it. [Dean Gaudet] *) Tweaked the headers_out table size, and the subprocess_env table size guess in rename_original_environment(). Added MAKE_TABLE_PROFILE which can help discover make_table() calls that use too small an initial guess, see alloc.c. [Dean Gaudet] *) Options and AllowOverrides weren't properly merging in the main server setting inside vhosts (only an issue when you have no or other section containing an Options that affects a request). Options +foo or -foo in the main_server wouldn't affect the main_server's lookup defaults. [Dean Gaudet] *) Variable 'cwd' was being used pointlessly before being set. [Ken Coar] PR#1738 *) r->allowed handling cleaned up in the standard modules. [Dean Gaudet] *) Some case-sensitivity issues cleaned up to be consistent with RFC2068. [Dean Gaudet] *) SIGURG doesn't exist everywhere. [Mark Andrew Heinrich ] *) mod_unique_id was erroneously generating a second unique id when an internal redirect occured. Such redirects occur, for example, when processing a DirectoryIndex match. [Dean Gaudet] *) table_add, table_merge, and table_set include implicit pstrdup() of the key and value. But in many cases this is not required because the key/value is a constant, or the value has been built by pstrcat() or other similar means. New routines table_addn, table_mergen, and table_setn have been added to the API, these routines do not pstrdup() their arguments. The core code and standard modules were changed to take advantage of these routines. The resulting server is up to 20% faster in some situations. Note that it is easy to get code subtly wrong if you pass a key/value which is in a pool other than the pool of the table. The only safe thing to do is to pass key/values which are in the pool of the table, or in one of the ancestors of the pool of the table. i.e. if the table is part of a subrequest, a value from the main request's pool is OK since the subrequest pool is a sub_pool of the main request's pool (and therefore has a lifespan at most as long as the main pool). There is debugging code which can detect improper usage, enabled by defining POOL_DEBUG. See alloc.c for more details. [Dmitry Khrustalev , Dean Gaudet] *) More mod_mime_magic cleanup: fewer syscalls; should handle "files" which don't exist on disk more gracefully; handles vhosts properly. Update documentation to reflect the code -- if there's no MimeMagicFile directive then the module is not enabled. [Dean Gaudet] *) PORT: Some older *nix dialects cannot automatically start scripts which begin with a #! interpreter line (the shell starts the scripts appropriately on these platforms). Apache now supports starting of "hashbang-scripts" when the NEED_HASHBANG_EMUL define is set. [Martin Kraemer, with code from peter@zeus.dialix.oz.au (Peter Wemm) taken from tcsh] *) "typedef array_header table" removed from alloc.h, folks should have been writing to use table as if it were an opaque type, but even some standard modules got this wrong. By changing the definition to "typedef struct table table" module authors will receive compile time warnings that they're doing the wrong thing. This change facilitates future changes with more sophisticated table structures. Specifically, module authors should be using table_elts() to get access to an array_header * for the table. [Dean Gaudet] *) Renamed new_connection() to avoid namespace collision with LDAP library routines. [Ken Coar, Rasmus Lerdorf] *) WIN32: mod_speling is now available on the Win32 platform. [Marc Slemko] *) For clarity the following compile time definition was changed: SAFE_UNSERIALIZED_ACCEPT -> SINGLE_LISTEN_UNSERIALIZED_ACCEPT Also, for example, HAVE_MMAP would mean to use mmap() scoreboards and not be a general notice that the OS has mmap(). Now the HAVE_MMAP/SHMGET #defines strictly are informational that the OS has that method of shared memory; the type to use for the scoreboard is a seperate #define (USE_MMAP_SCOREBOARD and USE_SHMGET_SCOREBOARD). This allows outside modules to determine if shared memory is available and allows Apache to determine the best method to use for the scoreboard. [Jim Jagielski] *) PORT: UnixWare 2.1.2 SMP appears to require USE_FCNTL_SERIALIZED_ACCEPT, as do various earlier versions. It should be safe on all versions. Unixware 1.x appears to have the same SIGHUP bug as solaris does with the slack code. A few other cleanups for Unixware. [Tom Hughes ] PR#1082, PR#1282, PR#1499, PR#1553 *) PORT: A/UX can handle single-listen accepts without mutex locking, so we add SINGLE_LISTEN_UNSERIALIZED_ACCEPT. [Jim Jagielski] *) When die() happens we need to eat any request body if one exists. Otherwise we can't continue with a keepalive session. This shows up as a POST problem with MSIE 4.0, typically against pages which are authenticated. [Roy Fielding] PR#1399 *) If you define SECURITY_HOLE_PASS_AUTHORIZATION then the Authorization header will be passed to CGIs. This is generally a security hole, so it's not a default. [Marc Slemko] PR#549 *) Fix Y2K problem with date printing in suexec log. [Paul Eggert ] PR#1343 *) WIN32 deserves a pid file. [Ben Hyde] *) suexec errors now include the errno/description. [Marc Slemko] PR#1543 *) PORT: OSF/1 now uses USE_FLOCK_SERIALIZED_ACCEPT to solve PR#467. The choice of flock vs. fcntl was made based on timings which showed that even on non-NFS, non-exported filesystems fcntl() was an order of magnitude slower. It also uses SINGLE_LISTEN_UNSERIALIZED_ACCEPT so that single socket users will see no difference. [Dean Gaudet] PR#467 *) "File does not exist" error message was erroneously including the errno. [Marc Slemko] *) Improve the warning message generated when a client drops the connection (hits stop button, etc.) during a send. [Roy Fielding] *) Defining GPROF will disable profiling in the parent and enable it in the children. If you're profiling under Linux this is pretty much necessary because SIGPROF is lost across a fork(). [Dean Gaudet] *) htdigest and htpasswd needed slight tweaks to work on OS/2 and WIN32. [Brian Havard] *) The NeXT cc (which is gcc hacked up) doesn't appear to support some gcc functionality. Work around it. [Keith Severson ] PR#1613 *) Some linkers complain when .o files contain no functions. [Keith Severson ] PR#1614 *) Some const declarations in mod_imap.c that were added for debugging purposes caused some compilers heartburn without adding any significant value, so they've been removed. [Ken Coar] *) The src/main/*.h header files have had #ifndef wrappers added to insulate them against duplicate calls if they get included through multiple paths (e.g., in .c files as well as other .h files). [Ken Coar] *) The libap routines now have a header file for their prototypes, src/ap/ap.h, to ease their use in non-httpd applications. [Ken Coar] *) mod_autoindex with a plaintext header file would emit the
     start-tag before the HTML preamble, rather than after the preamble
     but before the header file contents.  [John Van Essen ]
     PR#1667

  *) SECURITY: Fix a possible buffer overflow in logresolve.  This is
     only an issue on systems without a MAXDNAME define or where
     the resolver returns domain names longer than MAXDNAME.  [Marc Slemko]

  *) SECURITY: Eliminate possible buffer overflow in cfg_getline, which
     is used to read various types of files such as htaccess and
     htpasswd files.  [Marc Slemko]
  
  *) SECURITY: Ensure that the buffer returned by ht_time is always
     properly null terminated.  [Marc Slemko]

  *) The "Connection" header could be sent back with multiple "close"
     tokens.  Not an error, but a waste.
     [Ronald.Tschalaer@psi.ch] PR#1683

  *) mod_rewrite's RewriteLog should behave like mod_log_config, it
     shouldn't force hostname lookups.  [Dean Gaudet] PR#1684

  *) "basic" auth needs a case-insensitive comparison.
     [Ronald.Tschalaer@psi.ch] PR#1666

  *) For maximum portability, the environment passed to CGIs should
     only contain variables whose names match the regex
     /[a-zA-Z][a-zA-Z0-9_]*/.  This is now enforced by stamping
     underscores over any character outside the regex.  This
     affects HTTP_* variables, in a way that should be backward
     compatible for all the standard headers; and affects variables
     set with SetEnv/BrowserMatch and similar directives.
     [Dean Gaudet]

  *) Mod_speling returned incorrect HREF's when an ambigous match
     was found. Noticed by  (Soeren Ziehe)
     [robinton@amtrash.comlink.de (Soeren Ziehe), Martin Kraemer]

  *) PORT: Apache now compiles & runs on an EBCDIC mainframe
     (the Siemens Nixdorf BS2000-OSD family) in the POSIX subsystem
     [Martin Kraemer]

  *) PORT: Fix problem killing children when terminating.  Allow ^C
     to shut down the server.  [Brian Havard]

  *) pstrdup() is implicit in calls to table_* functions, so there's
     no need to do it before calling.  Clean up a few cases.
     [Marc Slemko, Dean Gaudet]

  *) new -C and -c command line arguments
     usage:
     -C "directive" : process directive before reading config files
     -c "directive" : process directive after reading config files
     example:
     httpd -C "PerlModule Apache::httpd_conf"
     [Doug MacEachern, Martin Kraemer]

  *) WIN32: Fix the execution of CGIs that are scripts and called 
     with path info that does not have an '=' in.
     (eg. http://server/cgi-bin/printenv?foobar)  PR#1591
     [Marc Slemko] 

  *) WIN32: Fix a call to os_canonical_filename so it doesn't try to 
     mess with fake filenames.  This fixes proxy caching on 
     win32. PR#1265

  *) SECURITY: General mod_include cleanup, including fixing several
     possible buffer overflows and a possible infinite loop.
     [Dean Gaudet, Marc Slemko]

  *) SECURITY: Numerous changes to mod_imap in a general cleanup
     including fixing a possible buffer overflow.  [Dean Gaudet]

  *) WIN32: overhaul of multithreading code. Shutdowns are now graceful
     (connections are not dropped). Code can handle graceful restarts
     (but there is as yet no way to signal this to Apache). Various
     other cleanups. [Paul Sutton]

  *) The aplog_error changes specific to 1.3 introduced a buffer
     overrun in the (now legacy) log_printf function.  Fixed.
     [Dean Gaudet]

  *) mod_digest didn't properly deal with proxy authentication.  It
     also lacked a case-insensitive comparision of the "Digest"
     token.  [Ronald Tschalaer ] PR#1599

  *) A few cleanups in mod_status for efficiency.  [Dean Gaudet]

  *) A few cleanups in mod_info to make it thread-safe, and remove an
     off-by-5 bug that could hammer \0 on the stack. [Dean Gaudet]

  *) no2slash() was O(n^2) in the length of the input.  Make it O(n).
     [Dean Gaudet]

  *) migration from strncpy() to our "enhanced" version called
     ap_cpystrn() for performance and functionality reasons.
     Located in libap.a.  [Jim Jagielski]

  *) table_set() and table_unset() did not deal correctly with
     multiple occurrences of the same key. [Stephen Scheck
	 , Ben Laurie] PR#1604

  *) Correct handling of quotation marks in AuthName realm names; as a
     byproduct, a new function: ap_escape_quotes().  [Ken Coar] PR#1195

  *) WIN32: Work around optimiser bug that killed ISAPI in release
     versions. [Ben Laurie] PR#1533

  *) PORT: Update the MPE port [Mark Bixby, Jim Jagielski]

  *) Interim (slow) fix for p->sub_pool critical sections in
     alloc.c (affects win32 only).  [Ben Hyde]
  
  *) non-WIN32 was missing destroy_mutex definition.  [Ben Hyde]
  
  *) send_fd_length() did not calculate total_bytes_sent properly.
     [Ben Reser ] PR#1366

  *) The bputc() macro was not properly integrated with the chunking
     code; in many cases modules using bputc() could cause completely
     bogus chunked output.  (Typically this will show up as problems
     with Internet Explorer 4.0 reading a page, but other browsers
     having no problem.) [Dean Gaudet]

  *) Create LARGE_WRITE_THRESHOLD define which determines how many
     bytes have to be supplied to bwrite() before it will consider
     doing a writev() to assemble multiple buffers in one system
     call.  This is critical for modules such as mod_include,
     mod_autoindex, mod_php3 which all use bputc()/bputs() of smaller
     strings in some cases.  The result would be extra effort
     setting up writev(), and in many cases extra effort building
     chunks.  The default is 31, it can be override at compile
     time. [Dean Gaudet]

  *) Move the gid switching code into the child so that log files
     and pid files are opened with the root gid.
     [Gregory A Lundberg ]

  *) WIN32: Check for binaries by looking for the executable header
     instead of counting control characters.
	 [Jim Patterson ] PR#1340

  *) ap_snprintf() moved from main/util_snprintf.c to ap/ap_snprintf.c
     so the functionality is available to applications other than the
     server itself (like the src/support tools).  [Ken Coar]

  *) ap_slack() moved out of main/util.c into ap/ap_slack.c as part of
     the libap consolidation work.  [Ken Coar]

  *) ap_snprintf() with a len of 0 behaved like sprintf().  This is not
     useful, and isn't what the standards require.  Now it returns 0
     and writes nothing.  [Dean Gaudet]
  
  *) When an error occurs in fcntl() locking suggest the user look up
     the docs for LockFile.  [Dean Gaudet]

  *) Eliminate some dead code from writev_it_all().
     [Igor Tatarinov ]
  
  *) mod_autoindex had an fread() without checking the result code.
     It also wouldn't handle "AddIconByType (TXT,/icons/text.gif text/*"
     (note the missing closing paren) properly.  [Dean Gaudet]

  *) It appears the "257th byte" bug (see
     htdocs/manual/misc/known_client_problems.html#257th-byte) can happen
     at the 256th byte as well.  Fixed.  [Dean Gaudet]

  *) PORT: Fix mod_mime_magic under OS/2, no support for block devices.
     [Brian Havard]

  *) Fix memory corruption caused by allocating auth usernames in the
     wrong pool.  [Dean Gaudet] PR#1500

  *) Fix an off-by-1, and an unterminated string error in
     mod_mime_magic.  [Dean Gaudet]

  *) Fix a potential SEGV problem in mod_negotiation when dealing
     with type-maps.  [Dean Gaudet]

  *) Better glibc support under Linux.  [Dean Gaudet] PR#1542

  *) "RedirectMatch gone /" would cause a SIGSEGV. [Dean Gaudet] PR#1319

  *) WIN32: avoid overflows during file canonicalisations.
     [malcolm@mgdev.demon.co.uk] #PR1378

  *) WIN32: set_file_slot() didn't detect absolute paths. [Ben Laurie]
     PR#1511, 1508

  *) WIN32: mod_status display header didn't match fields. [Ben Laurie]

  *) The pthread_mutex_* functions return an error code, and don't
     set errno.  [Igor Tatarinov ]

  *) WIN32: Allow spaces to prefix the interpreter in #! lines.
     [Ben Laurie] PR#1101

  *) WIN32: Cure file leak in CGIs. [Peter Tillemans ] PR#1523

  *) proxy_ftp: the directory listings generated by the proxy ftp module
     now have a title in which the path components are clickable and allow
     quick navigation to the clicked-on directory on the currently listed
     ftp server. This also fixes a bug where the ".." directory links would
     sometimes refer to the wrong directory.  [Martin Kraemer]

  *) WIN32: Allocate the correct amount of memory for the scoreboard.
     [Ben Hyde] PR#1387

  *) WIN32: Only lowercase the part of the path that is real. [Ben Laurie]
     PR#1505

  *) Fix problems with timeouts in inetd mode and -X mode.  [Dean Gaudet]

  *) Fix the spurious "(0)unknown error: mmap_handler: mmap failed"
     error messages. [Ben Hyde]

Changes with Apache 1.3b3

  *) WIN32: Work around brain-damaged spawn calls that can't deal
     with spaces and slashes.  [Ben Laurie]

  *) WIN32: Fix the code so CGIs can use socket calls on Windows.  
     The problem was that certain undocumented environment variables
	 needed for sockets to work under Win32 were not being passed.
     [Frank Faubert ]

  *) Add a "-V" command line flag to the httpd binary.  This 
     flag shows some of the defines that Apache was compiled with.
     It is useful for debugging purposes.  [Martin Kraemer]

  *) Start separating the ap_*() routines into their own library, so they
     can be used by items in src/support among other things.  PR#512, 905,
     1252, 1308 [Ken Coar]

  *) Give a more informative error when no AuthType is set.
     [Lars Eilebrecht]

  *) Remove strtoul() use from mod_proxy because it isn't available
     on all platforms.   [Marc Slemko] PR#1214

  *) WIN32: Some Win32 systems terminated all responses after 16 kB. 
     This turns out to be a bug in Winsock - select() doesn't always 
     return the correct status.  [Ben Laurie]

  *) Directives owned by http_core can now use the new check_cmd_context()
     routine to ensure that they're not being used within a container
     (e.g., ) where they're invalid.  [Martin Kraemer]

  *) PORT: Recent changes made it necessary to add explicit prototype
     for fgetc() and fgets() on SunOS 4.x.  [Martin Kraemer, Ben Hyde]

  *) It was necessary to distinguish between resources which are
     allocated in the parent, for cleanup in the parent, and resources
     which are allocated in each child, for cleanup in each child.
     A new pool was created which is passed to the module child_init
     and child_exit functions; modules are free to register per-child
     cleanups there.  This fixes a bug with reliable piped logs.
     [Dean Gaudet]

  *) mod_autoindex wasn't displaying the ReadmeName file at the bottom
     unless it was also doing FancyIndexes, but it displayed the
     HeaderName file at the top under all circumstances.  It now shows
     the ReadmeName file for simple indices, too, as it should.  PR#1373
     [Ken Coar]

  *) http_core was mmap()ing even in cases where it wasn't going to
     read the file.  [Ben Hyde ]

  *) Complete rewrite ;-) of mod_rewrite's URL rewriting engine:
     Now the rewriting engine (the heart of mod_rewrite) is organized more
     straight-forward, first time well documented and reduced to the really
     essential parts. All redundant cases were stripped off and processing now
     is the same for both per-server and per-directory context with only a
     minimum difference (the prefix stripping in per-dir context). As a
     side-effect some subtle restrictions and two recently discovered problems
     are gone: Wrong escaping of QUERY_STRING on redirects in per-directory
     context and restrictions on the substitution URL on redirects.
     Additionally some minor source cleanups were done. 
     [Ralf S. Engelschall] 

  *) Lars Eilebrecht wrote a whole new set of Apache Vhost Internals
     documentation, examples, explanations and caveats. They live in a new
     subdirectory htdocs/manual/vhost/. [Lars Eilebrecht ]

  *) If ap_slack fails to allocate above the low slack line it's a good
     indication that further problems will occur; it's a better indication
     than many external libraries give us when we actually run out of
     descriptors.  So report it to the user once per restart.
     [Dean Gaudet] PR#1181

  *) Change mod_include and mod_autoindex to use Y2K-safe date formats
     by default.  [Ken Coar]

  *) Add a "SuppressColumnSorting" option to the IndexOptions list,
     which will keep the column heading from being links for sorting
     the display.  [Ken Coar, suggested by Brian Tiemann ]
     PR #1261

  *) PORT: Update the LynxOS port.  [Marius Groeger ]

  *) Fix logic error when issuing a mmap() failed message
     with a non-zero MMAP_THRESHOLD.
     [David Chambers ] PR#1294

  *) Preserve handler value on ProxyPass'ed requests by not
     calling find_types on a proxy'd request; fixes problems
     where some ProxyPass'ed URLs weren't actually passed
     to the proxy.
     [Lars Eilebrecht] PR#870

  *) Fix a byte ordering problem in mod_access which prevented
     the old-style syntax (i.e. "a.b.c." to match a class C)
     from working properly. [Dean Gaudet] PR#1248, 1328, 1384

  *) Fix problem with USE_FLOCK_SERIALIZED_ACCEPT not working
     properly. Each child needs to open the lockfile instead
     of using the passed file-descriptor from the parent. 
     [Jim Jagielski] PR#1056

  *) Fix the error logging in mod_cgi; the recent error log changes
     introduced a bug that prevented it from working correctly.
     [M.D.Parker] PR#1352

  *) Default to USE_FCNTL_SERIALIZED_ACCEPT on HPUX to properly 
     handle multiple Listen directives.  [Marc Slemko] PR#872

  *) Inherit a bugfix to fnmatch.c from FreeBSD sources.
     ["[KOI8-R] Андрей Чернов" ] PR#1311

  *) When a configuration parse complained about a bad directive,
     the logger would use whatever (unrelated) value was in errno.
     errno is now forced to EINVAL first in this case.  [Ken Coar]

  *) A sed command in the Configure script pushed the edge of POSIXness,
     breaking on some systems.  [Bhaba R.Misra ] PR#1368
  
  *) Solaris >= 2.5 was totally broken due to a mess up using pthread
     mutexes.  [Roy Fielding, Dean Gaudet]

  *) OS/2 Port updated; it should be possible to build OS/2 from the same
     sources as Unix now.  [Brian Havard ]

  *) Fix a year formatting bug in mod_usertrack.
     [Paul Eggert ] PR#1342

  *) A mild SIGTERM/SIGALRM race condition was eliminated.
     [Dean Gaudet] PR#1211

  *) Warn user that default path has changed if /usr/local/etc/httpd
     is found on the system.  [Lars Eilebrecht]

  *) Various mod_mime_magic bug fixes and cleanups: Uncompression
     should work, it should work on WIN32, and a few resource
     leaks and abort conditions are fixed.
     [Dean Gaudet] PR#1205

  *) PORT: On AIX 1.x files can't be named '@', fix the proxy cache
     to use '%' instead of '@' in its encodings.
     [David Schuler ] PR#1317

  *) Improve the warning message generated when the "server is busy".
     [Dean Gaudet] PR#1293

  *) PORT: All ports which don't otherwise define DEF_WANTHSREGEX will
     get Spencer regex by default.  This is to avoid having to
     discover bugs in operating system libraries.  [Dean Gaudet]

  *) PORT: "Fix" PR#467 by generating warnings on systems which we have
     not been able to get working USE_*_SERIALIZED_ACCEPT settings for.
     Document this a bit more in src/PORTING.  [Dean Gaudet] PR#467

  *) Ensure that one copy of config warnings makes it to the
     error_log.  [Dean Gaudet]

  *) Invent new structure and associated methods to handle config file
     reading. Add "custom" hook to use config file cfg_getline() on
     something which is not a FILE*  [Martin Kraemer]

  *) Make single-exe Windows install. [Ben Laurie and Eric Esselink]

  *) WIN32: Make CGI work under Win95. [Ben Laurie and Paul Sutton]

  *) WIN32: Make index.html and friends work under Win95. [Ben Laurie]

  *) PORT: Solaris 2.4 needs Spencer regex, the system regex is broken.
	[John Line ] PR#1321

  *) Default pathname has been changed everywhere to /usr/local/apache
     [Sameer ]

  *) PORT: AIX now uses USE_FCNTL_SERIALIZED_ACCEPT.
	[David Bronder ] PR#849

  *) PORT: i386 AIX does not have memmove.
     [David Schuler ] PR#1267

  *) PORT: HPUX now defaults to using Spencer regex.
     [Philippe Vanhaesendonck ,
     Omar Del Rio ] PR#482, 1246

  *) PORT: Some versions of NetBSD don't automatically define
	    __NetBSD__.  Workaround by defining NETBSD.
     [Chris Craft ] PR#977

  *) PORT: UnixWare 2.x requires -lgen for syslog.
     [Hans Snijder ] PR#1249

  *) PORT: ULTRIX appears to not have syslog.
     [Lars Eilebrecht ]

  *) PORT: Basic Gemini port (treat it like unixware212).
     ["Pavel Yakovlev (Paul McHacker)" ]

  *) PORT: All SVR4 systems now use NET_SIZE_T = size_t, and
	    use USE_SHMGET_SCOREBOARD.
     [Martin Kraemer]

  *) Various improvements in detecting config file errors (missing closing
     directives for ,  etc. blocks, prohibiting global
     server settings in  blocks, flagging unhandled multiple
     arguments to ,  etc.)
     [Martin Kraemer]

  *) Add support to suexec wrapper program for mod_unique_id's UNIQUE_ID
     variable to provide this one to suexec'd CGIs, too.
     [M.D.Parker ] PR#1284

  *) New support tool: src/support/split-logfile, a sample Perl script which
     splits up a combined access log into separate files based on the
     name of the virtual host (listed first in the log records by "%v").
     [Ken Coar]

Changes with Apache 1.3b2 (there is no 1.3b1)

  *) TestCompile was not passing $LIBS [Dean Gaudet]

  *) Makefile.tmpl was not using $CFLAGS in the link phase. 
     [Martin Kraemer]

  *) Add debugging code to alloc.c.  Defining ALLOC_DEBUG provides a
     rudimentary memory debugger which can be used on live servers with
     low impact -- it sets all allocated and freed memory bytes to 0xa5.
     Defining ALLOC_USE_MALLOC will cause the alloc code to use malloc()
     and free() for each object.  This is far more expensive and should
     only be used for testing with tools such as Electric Fence and
     Purify.  See main/alloc.c for more details.  [Dean Gaudet]

  *) Configure uses a sh trap and didn't set its exitcode properly.
     [Dean Gaudet] PR#1159

  *) Yet another vhost revamp.  Add the NameVirtualHost directive which
     explicitly lists the ip:port pairs that are to be used for name-vhosts.
     From a given ip:port, regardless what the Host: header is, you can
     only reach the vhosts defined on that ip:port.  The precedence of
     vhosts was reversed to match other precedences in the config --
     the earlier vhosts override the later vhosts.  All vhost matching was
     moved into http_vhost.[ch].  [Dean Gaudet]

  *) ap_inline can be used to force inlining.  GNUC __attribute__() can
     be used for whatever reason is appropriate (i.e. format() warnings
     for printf style functions).  Both are enabled only with
     gcc >= 2.7.x (so that we have fewer support issues with older
     versions).  [Dean Gaudet]

  *) Fix support for Proxy Authentication (we were testing the response
     status too early). [Marc Slemko]

  *) CoreDumpDirectory directive directs where the core file is
     written when a SIGSEGV, SIGBUS, SIGABORT or SIGABRT are
     received.  [Marc Slemko, Dean Gaudet]

  *) PORT: Support for Atari MINT.
     [Jan Paul Schmidt ]

  *) When booting, apache will now detach itself from stdin, stdout,
     and stderr.  stderr will not be detached until after the config
     files have been read so you will be able to see initial error
     messages.  After that all errors are logged in the error_log.
     This makes it more convenient to start apache via rsh, ssh,
     or crontabs.  [Dean Gaudet] PR#523

  *) mod_proxy was sending HTTP/1.1 responses to ftp requests by mistake.
     Also removed the auto-generated link to www.apache.org that was the
     source of so many misdirected bug reports.  [Roy Fielding, Marc Slemko]

  *) send_fb would not detect aborted connections in some situations.
     [Dean Gaudet]

  *) mod_include would use uninitialized data when parsing certain
     expressions involving && and ||. [Brian Slesinsky] PR#1139

  *) mod_imap should only handle GET methods.  [Jay Bloodworth]

  *) suexec.c wouldn't build without -DLOG_EXEC. [Jason A. Dour]

  *) mod_autoindex improperly counted &escapes; as more than one
     character in the description.  It also improperly truncated
     descriptions that were exactly the maximum length.
     [Martin Kraemer]

  *) RedirectMatch was not properly escaping the result (PR#1155).  Also
     "RedirectMatch /advertiser/(.*) $1" is now permitted.
     [Dean Gaudet]

  *) mod_include now uses symbolic names to check for request success
     and return HTTP errors, and correctly handles all types of
     redirections (previously it only did temporary redirect correctly).
     [Ken Coar, Roy Fielding]

  *) mod_userdir was modifying r->finfo in cases where it wasn't setting
     r->filename.  Since those two are meant to be in sync with each other
     this is a bug.  ["Paul B. Henson" ]

  *) PORT: Support Unisys SVR4, whose uname returns mostly useless data.
     ["Kaufman, Steven E" ]

  *) Inetd mode (which is buggy) uses timeouts without having setup the
     jmpbuffer. [Dean Gaudet] PR#1064

  *) Work around problem under Linux where a child will start looping
     reporting a select error over and over.
     [Rick Franchuk ] PR#1107

  *) Fixed error in proxy_util.c when looping through multiple host IP
     addresses. [Lars Eilebrecht] PR#974

  *) If BUFFERED_LOGS is defined then mod_log_config will do atomic
     buffered writes -- that is, it will buffer up to PIPE_BUF (i.e. 4k)
     bytes before writing, but it will never split a log entry across a
     buffer boundary.  [Dean Gaudet]

  *) API: the short_score record has been split into two pieces, one which
     the parent writes on, and one which the child writes on.  As part of
     this change the get_scoreboard_info() function was removed, and
     scoreboard_image was exported.  This change fixes a race condition
     in file based scoreboard systems, and speeds up changes involving the
     scoreboard in earlier 1.3 development.  [Dean Gaudet]

  *) API: New register_other_child() API (see http_main.h) which allows
     modules to register children with the parent for maintenance.  It
     is disabled by defining NO_OTHER_CHILD.  [Dean Gaudet]

  *) API: New piped_log API (see http_log.h) which implements piped logs,
     and will use register_other_child to implement reliable piped logs
     when it is available.  The reliable piped logs part can be disabled
     by defining NO_RELIABLE_PIPED_LOGS.  At the moment reliable piped
     logs is only available on Unix. [Dean Gaudet]

  *) API: set_last_modified() broken into set_last_modified(), set_etag(), and
     meets_conditions().  This allows conditional HTTP selection to be
     handled separately from the storing of the header fields, and provides
     the ability for CGIs to set their own ETags for conditional checking.
     [Ken Coar, Roy Fielding]  PR#895

  *) Changes to mod_log_config to allow naming of format strings.
     Format nicknames are defined with "LogFormat fmt nickname", and can
     be used with "LogFormat nickname" and "CustomLog logtarget nickname".
     [Ken Coar]

  *) New module, "mod_speling", which can help find files even when 
     the URL is slightly misspelled. [Martin Kraemer, Alexei Kosut]

  *) API: New function child_terminate() triggers the child process to
     exit, while allowing the child finish what it needs to for the
     current request first.  
     [Doug MacEachern, Alexei Kosut]

  *) Windows now defaults to using full status reports with mod_status.
     [Alexei Kosut, PR #1094]

  *) *Really* disable all mod_rewrite operations if the engine is off.
     Some things (like RewriteMaps) were checked/performed even if they
     weren't supposed to be.  [Ken Coar, PR #991]

  *) Implement a new timer scheme which eliminates the need to call alarm() all
     the time.  Instead a counter in the scoreboard for each child is used to
     show when the child has made forward progress.  The parent samples this
     counter every scoreboard maintenance cycle, and issues SIGALRM if no
     progress has been made in the timeout period.  This reduces the static
     request best-case syscall count to 22 from 29.  This scheme is only
     used by systems with memory-based scoreboards.  [Dean Gaudet]

  *) The proxy now properly handles CONNECT requests which are sent
     to proxy servers when using ProxyRemote.  [Marc Slemko, PR#1024]

  *) A script called apachectl has been added to the support 
     directory.  This script allows you to do things such as 
     "apachectl start" and "apachectl restart" from the command
     line.  [Marc Slemko]

  *) Modules and core routines are now put into libraries, which
     simplifies the link line tremendously (among other advantages).
     [Paul Sutton]

  *) Some of the MD5 names defined in Apache have been renamed to have
     an `ap_' prefix to avoid conflicts with routines supplied by
     external libraries.  [Ken Coar]

  *) Removal of mod_auth_msql.c from the distribution. There are many
     other options for databases today. Rather than offer one option,
     offer none at this time. mod_auth_msql and other SQL database
     authentication modules can be found at the Apache Module Registry.
     http://modules.apache.org/ It would be nice to offer a generic
     mod_auth_sql option in the near future.

  *) PORT: BeOS support added [Alexei Kosut]

  *) Configure no longer accepts the -make option, since it creates
     Makefile on the fly based on Makefile.tmpl and Configuration.

  *) Apache now gracefully shuts down when it receives a SIGTERM, instead
     of forcibly killing off all its processes and exiting without
     cleaning up. [Alexei Kosut]

  *) API: A new field in the request_rec, r->mtime, has been added to
     avoid gratuitous parsing of date strings.  It is intended to hold
     the last-modified date of the resource (if applicable).  An
     update_mtime() routine has also been added to advance it if
     appropriate.  [Roy Fielding, Ken Coar]

  *) SECURITY: If a htaccess file can not be read due to bad permissions,
     deny access to the directory with a HTTP_FORBIDDEN.  The previous
     behavior was to ignore the htaccess file if it could not be read.
     This change may make some setups with unreadable htaccess files
     stop working.  PR#817  [Marc Slemko]

  *) Add aplog_error() providing a mechanism to define levels of
     verbosity to the server error logging. This addition also provides
     the ability to log errors using syslogd. Error logging is configurable
     on a per-server basis using the LogLevel directive. Conversion
     of log_*() in progress. [Randy Terbush]

  *) Further enhance aplog_error() to not log filename, line number, and
     errno information when it isn't applicable. [Ken Coar, Dean Gaudet]

  *) WIN32: Canonicalise filenames under Win32. Short filenames are
     converted to long ones. Backslashes are converted to forward
     slashes. Case is converted to lower. Parts of URLs that do not
     correspond to files are left completely alone. [Ben Laurie]

  *) PORT: 2 new OSs added to the list of ports:
      Encore's UMAX V: Arieh Markel 
      Acorn RISCiX: Stephen Borrill 

  *) Add the server version (SERVER_VERSION macro) to the "server
     configured and running" entry in the error_log.  Also build an
     object file at link-time that contains the current time
     (SERVER_BUILT global const char[]), and include that in the
     message.  [Ken Coar]

  *) Set r->headers_out when sending responses from the proxy.
     This fixes things such as the logging of headers sent from
     the proxy.  PR#659  [Marc Slemko]

  *) support/httpd_monitor is no longer distributed because the 
     scoreboard should not be file based if at all possible. Use
     mod_status to see current server snapshot.

  *) (set_file_slot): New function, allowing auth directives to be
     independent of the server root, so the server documents can be
     moved to a different directory or machine more easily.
     [David J. MacKenzie]

  *) If no TransferLog is given explicitly, decline
     to log.  This supports coexistence with other logging modules,
     such as the custom one that UUNET uses. [David J. MacKenzie]

  *) Check for titles in server-parsed HTML files.
     Ignore leading newlines and returns in titles.  The old behavior
     of replacing a newline after  with a space causes the
     title to be misaligned in the listing. [David J. MacKenzie]

  *) Change mod_cern_meta to be configurable on a per-directory basis.
     [David J. MacKenzie]

  *) Add 'Include' directive to allow inclusion of configuration
     files within configuration files. [Randy Terbush]

  *) Proxy errors on connect() are logged to the error_log (nothing
     new); now they include the IP address and port that failed
     (*that's* new).  PR#352  [Ken Coar, Marc Slemko]

  *) Various architectures now define USE_MMAP_FILES which causes
     the server to use mmap() for static files.  There are two
     compile-time tunables MMAP_THRESHOLD (minimum number of bytes
     required to use mmap(), default is 0), and MMAP_SEGMENT_SIZE (maximum
     number of bytes written in one cycle from a single mmap()d object,
     default 32768).  [Dean Gaudet]

  *) API: Added post_read_request API phase which is run right after reading
     the request from a client, or right after an internal redirect.  It is
     useful for modules setting environment variables that depend only on
     the headers/contents of the request.  It does not run during subrequests
     because subrequests inherit pretty much everything from the main
     request. [Dean Gaudet]

  *) Added mod_unique_id which is used to generate a unique identifier for
     each hit, available in the environment variable UNIQUE_ID.
     [Dean Gaudet]

  *) init_modules is now called after the error logs have been opened.  This
     allows modules to emit information messages into the error logs.
     [Dean Gaudet]

  *) Fixed proxy-pass-through feature of mod_rewrite; Added error logging
     information for case where proxy module is not available. [Marc Slemko]

  *) PORT: Apache has need for mutexes to serialize its children around
     accept.  In prior versions either fcntl file locking or flock file
     locking were used.  The method is chosen by the definition of
     USE_xxx_SERIALIZED_ACCEPT in conf.h.  xxx is FCNTL for fcntl(),
     and FLOCK for flock().  New options have been added:
	- SYSVSEM to use System V style semaphores
	- PTHREAD to use POSIX threads (appears to work on Solaris only)
	- USLOCK to use IRIX uslock
     Based on timing various techniques, the following changes were made
     to the defaults:
	- Linux 2.x uses flock instead of fcntl
	- Solaris 2.x uses pthreads
	- IRIX uses SysV semaphores -- however multiprocessor IRIX boxes
	    work far faster if you -DUSE_USLOCK_SERIALIZED_ACCEPT
     [Dean Gaudet, Pierre-Yves Kerembellec <Pierre-Yves.Kerembellec@vtcom.fr>,
     Martijn Koster <m.koster@pobox.com>]

  *) PORT: The semantics of accept/select make it very desirable to use
     mutexes to serialize accept when multiple Listens are in use.  But
     in the case where only a single socket is open it is sometimes
     redundant to serialize accept().  Not all unixes do a good job with
     potentially dozens of children blocked on accept() on the same
     socket.  It's now possible to define SINGLE_LISTEN_UNSERIALIZED_ACCEPT and
     the server will avoid serialization when listening on only one socket,
     and use serialization when listening on multiple sockets.
     [Dean Gaudet] PR#467

  *) Configure changes: TestLib replaced by TestCompile, which has
     some additional capability (such as doing a sanity check of
     the compiler and flags selected); the version of Solaris is now
     available via the #define value of SOLARIS2; IRIX n32bit libs
     now supported and selectable by new Configuration Rule: IRIXN32;
     We no longer default to -O2 optimization.  [Jim Jagielski]

  *) Updated Configure: Configuration now uses AddModule to specify
     module source or binary file location, relative to src directory.
     Modules can be dropped into modules/extra, or in their own 
     directory, and modules can come with a Makefile or Configure can 
     create one.  Modules can add compiler or library information to 
     generated Makefiles. [Paul Sutton]

  *) Source core re-organisation: distributed modules are now in 
     modules/standard. All other source code is in main. OS-specific
     code is in os/{unix,emx,win32} directories. [Paul Sutton]

  *) mod_browser has been removed, since it's replaced by mod_setenvif.
     [Ken Coar]

  *) Fix another long-standing bug in sub_req_lookup_file where it would
     happily skip past access checks on subdirectories looked up with
     relative paths.  (It's used by mod_dir, mod_negotiation,
     and mod_include.) [Dean Gaudet]

  *) directory_walk optimization to reduce an O(N*M) loop to O(N+M) where
     N is the number of <Directory> sections, and M is the number of
     components in the filename of an object.

     To achieve this optimization the following config changes were made:
	- Wildcards (* and ?, not the regex forms) in <Directory>s,
	  <Files>s, and <Location>s now treat a slash as a special
	  character.  For example "/home/*/public_html" previously would
	  match "/home/a/andrew/public_html", now it only matches things
	  like "/home/bob/public_html".  This mimics /bin/sh behaviour.
	- It's possible now to use [] wildcarding in <Directory>, <Files>
	  or <Location>.
	- Regex <Directory>s are applied after all non-regex <Directory>s.

    [Dean Gaudet]
  
  *) Fix a bug introduced in 1.3a1 directory_walk regarding .htaccess files
     and corrupted paths.  [Dean Gaudet]

  *) Enhanced and cleaned up the URL rewriting engine of mod_rewrite:
     First the grouped parts of RewriteRule pattern matches (parenthesis!) can
     be accessed now via backreferences $1..$9 in RewriteConds test-against
     strings in addition to RewriteRules subst string. Second the grouped
     parts of RewriteCond pattern matches (parenthesis!) can be accessed now
     via backreferences %1..%9 both in following RewriteCond test-against
     strings and RewriteRules subst string. This provides maximum flexibility
     through the use of backreferences.
     Additionally the rewriting engine was cleaned up by putting common
     code to the new expand_backrefs_inbuffer() function. 
     [Ralf S. Engelschall]

  *) When merging the main server's <Directory> and <Location> sections into
     a vhost, put the main server's first and the vhost's second.  Otherwise
     the vhost can't override the main server.  [Dean Gaudet] PR#717

  *) The <Directory> code would merge and re-merge the same section after
     a match was found, possibly causing problems with some modules.
     [Dean Gaudet]

  *) ip-based vhosts are stored and queried using a hashing function, which
     has been shown to improve performance on servers with many ip-vhosts.
     Some other changes had to be made to accommodate this:
	- the * address for vhosts now behaves like _default_
	- the matching process now is:
	    - match an ip-vhost directly via hash (possibly matches main
		server)
	    - if that fails, just pretend it matched the main server
	    - if so far only the main server has been matched, perform
		name-based lookups (ServerName, ServerAlias, ServerPath)
		*only on name-based vhosts*
	    - if they fail, look for _default_ vhosts
     [Dean Gaudet, Dave Hankins <dhankins@sugarat.net>]

  *) dbmmanage overhaul:
     - merge dbmmanage and dbmmanage.new functionality, remove dbmmanage.new 
     - tie() to AnyDBM_File which will use one of DB_File, NDBM_File or
       GDBM_File (-ldb, -lndbm, -lgdbm) (trying each in that order)
     - provide better seed for rand
     - prompt for password as per getpass(3) (turn off echo, read from
       /dev/tty, etc.)
     - use "newstyle" crypt based on $Config{osname} ($^O)
     - will not add a user if already in database, use new `update' command
       instead
     - added `check' command to check a users' password
     - added `import' command to convert existing password text-files or 
       dbm files exported with `view'
     - more descriptive usage, general cleanup, 'use strict' clean, etc.
     [Doug MacEachern]

  *) Added psocket() which is a pool form of socket(), various places within
     the proxy weren't properly blocking alarms while registering the cleanup
     for its sockets.  bclose() now uses pclose() and pclosesocket().  There
     was a bug where the client socket was being close()d twice due a still
     registered cleanup.  [Dean Gaudet]

  *) A few cleanups were made to reduce time(), getpid(), and signal() calls.
     [Dean Gaudet]

  *) PORT: AIX >= 4.2 requires -lm due to libc changes.
     [Jason Venner <jason@idiom.com>] PR#667

  *) Enable ``=""'' for RewriteCond directives to match against
     the empty string. This is the preferred way instead of ``^$''.
     [Ralf S. Engelschall]

  *) Fixed an infinite loop in mod_imap for references above the server root
     [Dean Gaudet] PR#748

  *) mod_proxy now has a ReceiveBufferSize directive, similar to
     SendBufferSize, so that the TCP window can be set appropriately
     for LFNs. [Phillip A. Prindeville]

  *) mod_browser has been replaced by the more general mod_setenvif
     (courtesy of Paul Sutton).  BrowserMatch* directives are still
     available, but are now joined by SetEnvIf*, UnSetEnvIf*, and
     UnSetEnvIfZero directives.  [Ken Coar]

  *) "HostnameLookups double" forces double-reverse DNS to succeed in
     order for remote_host to be set (for logging, or for the env var
     REMOTE_HOST).  The old define MAXIMUM_DNS has been deprecated.
     [Dean Gaudet]

  *) mod_access overhaul:
     - Now understands network/netmask syntax (i.e.  10.1.0.0/255.255.0.0)
	and cidr syntax (i.e. 10.1.0.0/16).  PR#762
     - Critical path was sped up by pre-computing a few things at config
	time.
     - The undocumented syntax "allow user-agents" was removed,
	the replacement is "allow from env=foobar" combined with mod_browser.
     - When used with hostnames it now forces a double-reverse lookup
	no matter what the directory settings are.  This double-reverse
	doesn't affect any of the other routines that use the remote
	hostname.  In particular it's still passed to CGIs and the log
	without the double-reverse check.  Related PR#860.
     [Dean Gaudet]

  *) When a large bwrite() occurs (larger than the internal buffer size),
     while there is already something in the buffer, apache will combine
     the large write and the buffer into a single writev().  (This is
     in anticipation of using mmap() for reading files.)
     [Dean Gaudet]

  *) In obscure cases where a partial socket write occurred while chunking,
     Apache would omit the chunk header/footer on the next block.  Cleaned
     up other bugs/inconsistencies in error conditions in buff.c.  Fixed
     a bug where a long pause in DNS lookups could cause the last packet
     of a response to be unduly delayed.  [Roy Fielding, Dean Gaudet]

  *) API: Added child_exit function to module structure.  This is called
     once per "heavy-weight process" just before a server child exit()'s 
     e.g. when max_requests_per_child is reached, etc.
     [Doug MacEachern, Dean Gaudet]
  
  *) mod_include cleanup showed that handle_else was being used to handle
     endif.  It didn't cause problems, but it was cleaned up too.
     [Howard Fear]

  *) mod_cern_meta would attempt to find meta files for the directory itself
     in some cases, but not in others.  It now avoids it in all cases.
     [Dean Gaudet]

  *) mod_mime_magic would core dump if there was a decompression error.
     [Martin Kraemer <Martin.Kraemer@mch.sni.de>] PR#904

  *) PORT: some variants of DGUX require -lsocket -lnsl
     [Alexander L Jones <alex@systems-options.co.uk>] PR#732

  *) mod_autoindex now allows sorting of FancyIndexed directory listings
     by the various fields (name, size, et cetera), either in ascending
     or descending order.  Just click on the column header.  [Ken Coar]

  *) PORT: Various tweaks to eliminate pointer-int casting warnings on 64-bit
     CPUs like the Alpha.  Apache still stores ints in pointers, but that's
     the relatively safe direction.  [Dean Gaudet] PR#344

  *) PORT: QNX mmap() support for faster/more reliable scoreboard handling.
     [Igor N Kovalenko <infoh@mail.wplus.net>] PR#683

  *) child_main avoids an unneeded call to select() when there is only one
     listening socket.  [Dean Gaudet]

  *) In the event that the server is starved for idle servers it will
     spawn 1, then 2, then 4, ..., then 32 servers each second,
     doubling each second.  It'll also give a warning in the errorlog
     since the most common reason for this is a poor StartServers
     setting.  The define MAX_SPAWN_RATE can be used to raise/lower
     the maximum.  [Dean Gaudet]

  *) Apache now provides an effectively unbuffered connection for
     CGI scripts.  This means that data will be sent to the client
     as soon as the CGI pauses or stops output; previously, Apache would
     buffer the output up to a fixed buffer size before sending, which
     could result in the user viewing an empty page until the CGI finished
     or output a complete buffer.  It is no longer necessary to use an
     "nph-" CGI to get unbuffered output.  Given that most CGIs are written
     in a language that by default does buffering (e.g. perl) this
     shouldn't have a detrimental effect on performance.

     "nph-" CGIs, which formerly provided a direct socket to the client
     without any server post-processing, were not fully compatible with
     HTTP/1.1 or SSL support.  As such they would have had to implement
     the transport details, such as encryption or chunking, in order
     to work properly in certain situations.  Now, the only difference
     between nph and non-nph scripts is "non-parsed headers".
     [Dean Gaudet, Sameer Parekh, Roy Fielding]

  *) If a BUFF is switched from buffered to unbuffered reading the first
     bread() will return whatever remained in the buffer prior to the
     switch. [Dean Gaudet]

Changes with Apache 1.3a1

  *) Added another Configure helper script: TestLib. It determines
     if a specified library exists.  [Jim Jagielski]

  *) PORT: Allow for use of n32bit libraries under IRIX 6.x
     [derived from patch from Jeff Hayes <jhayes@aw.sgi.com>]
     (PR#721)

  *) PORT: Some architectures use size_t for various lengths in network
     functions such as accept(), and getsockname().  The definition
     NET_SIZE_T is used to control this. [Dean Gaudet]

  *) PORT: Linux: Attempt to detect glibc based systems and include crypt.h
     and -lcrypt.  Test for various db libraries (dbm, ndbm, db) when
     mod_auth_dbm or mod_auth_db are included.  [Dean Gaudet]

  *) PORT: QNX doesn't have initgroups() which support/suexec.c uses.
     [Igor N Kovalenko <infoh@mail.wplus.net>]

  *) "force-response-1.0" now only applies to requests which are HTTP/1.0 to
     begin with.  "nokeepalive" now works for HTTP/1.1 clients.  Added
     "downgrade-1.0" which causes Apache to pretend it received a 1.0.
     [Dean Gaudet] related PR#875

  *) API: Correct child_init() slot declaration from int to void, to
     match the init() declaration.  Update mod_example to use the new
     hook.  [Ken Coar]

  *) added transport handle slot (t_handle) to the BUFF structure
     [Doug MacEachern]
     
  *) get_client_block() returns wrong length if policy is
     REQUEST_CHUNKED_DECHUNK.
     [Kenichi Hori <ken@d2.bs1.fc.nec.co.jp>] PR#815

  *) Support the image map format of FrontPage.  For example:
        rect /url.hrm 10 20 30 40
     ["Chris O'Byrne" <obyrne@iol.ie>] PR#807
  
  *) PORT: -lresolv and -lsocks were in the wrong order for Solaris.
     ["Darren O'Shaughnessy" <darren@aaii.oz.au>] PR#846

  *) AddModuleInfo directive for mod_info which allows you to annotate
     the output of mod_info.  ["Lou D. Langholtz" <ldl@usi.utah.edu>]

  *) Added NoProxy directive to avoid using ProxyRemote for selected
     addresses.  Added ProxyDomain directive to cause unqualified
     names to be qualified by redirection.
     [Martin Kraemer <Martin.Kraemer@mch.sni.de>]

  *) Support Proxy Authentication, and don't pass the Proxy-Authorize
     header to the remote host in the proxy. [Sameer Parekh and
     Wallace]
  
  *) Upgraded mod_rewrite from 3.0.6+ to latest officially available version
     3.0.9. This upgrade includes: fixed deadlooping on rewriting to same
     URLs, fixed rewritelog(), fixed forced response code handling on
     redirects from within .htaccess files, disabled pipe locking under
     braindead SunOS 4.1.x, allow env variables to be set even on rules with
     no substitution, bugfixed situations where HostnameLookups is off, made
     mod_rewrite more thread-safe for NT port and fixed problem when creating
     an empty query string via "xxx?".
         This update also removes the copyright of Ralf S. Engelschall,
     i.e. now mod_rewrite no longer has a shared copyright. Instead is is
     exclusively copyrighted by the Apache Group now. This happened because
     the author now has gifted mod_rewrite exclusively to the Apache Group and 
     no longer maintains an external version.
     [Ralf S. Engelschall]
  
  *) API: Added child_init function to module structure.  This is called
     once per "heavy-weight process" before any requests are handled.
     See http_config.h for more details.  [Dean Gaudet]
  
  *) Anonymous_LogEmail was logging on each subrequest.
     [Dean Gaudet] PR#421, 868

  *) API: Added is_initial_req() which tests if the request being
     processed is the initial request, or a subrequest.
     [Doug MacEachern]

  *) Extended SSI (mod_include) now handles additional relops for
     string comparisons (<, >, <=, and >=).  [Bruno Wolff III] PR#41

  *) Configure fixed to correctly propagate user-selected options and
     settings (such as CC and OPTIM) to Makefiles other than
     src/Makefile (notably support/Makefile).  [Ken Coar] PR#666, #834

  *) IndexOptions SuppressHTMLPreamble now causes the actual HTML of
     directory indices to start with the contents of the HeaderName file
     if there is one.  If there isn't one, the behaviour is unchanged.
     [Ken Coar, Roy Fielding, Andrey A. Chernov]

  *) WIN32: Modules can now be dynamically loaded DLLs using the
     LoadModule/LoadFile directives. Note that module DLLs must be
     compiled with the multithreaded DLL version of the runtime library.
     [Alexei Kosut and Ben Laurie]

  *) Automatic indexing removed from mod_dir and placed into mod_autoindex.
     This allows the admin to completely remove automatic indexing
     from the server, while still supporting the basic functions of
     trailing-slash redirects and DirectoryIndex files.  Note that if
     you're carrying over an old Configuration file and you use directory
     indexing then you'll want to add:

     Module autoindex_module    mod_autoindex.o

     before mod_dir in your Configuration.  [Dean Gaudet]

  *) popendir/pclosedir created to properly protect directory scanning.
     [Dean Gaudet] PR#525

  *) AliasMatch, ScriptAliasMatch and RedirectMatch directives added,
     giving regex support to mod_alias. <DirectoryMatch>, <LocationMatch>
     and <FilesMatch> sections added to succeed <DirectoryMatch ~>, etc...
     [Alexei Kosut]

  *) The AccessFileName directive can now take more than one filename.
     ["Lou D. Langholtz" <ldl@usi.utah.edu>]

  *) The new mod_mime_magic can be used to "magically" determine the type
     of a file if the extension is unknown.  Based on the unix file(1)
     command.  [Ian Kluft <ikluft@cisco.com>]

  *) We now determine and display the time spent processing a
     request if desired.  [Jim Jagielski]

  *) mod_status: PID field of "dead" child slots no longer displays
     main httpd process's PID.  [Jim Jagielski]

  *) Makefile.nt added - to build all the bits from the command line:
        nmake -f Makefile.nt
         Doesn't yet work properly. [Ben Laurie]

  *) Default text of 404 error is now "Not Found" rather than the
     potentially misleading "File Not Found".  [Ken Coar]

  *) CONFIG: "HostnameLookups" now defaults to off because it is far better
     for the net if we require people that actually need this data to
     enable it.  [Linus Torvalds]
  
  *) directory_walk() is an expensive function, keep a little more state to
     avoid needless string counting.  Add two new functions make_dirstr_parent
     and make_dirstr_prefix which replace all existing uses of make_dirstr.
     The new functions are a little less general than make_dirstr, but
     work more efficiently (less memory, less string counting).
     [Dean Gaudet]

  *) EXTRA_LFLAGS was changed to EXTRA_LDFLAGS (and LFLAGS was changed
     to LDFLAGS) to avoid complications with lex rules in make files.
     [Dean Gaudet] PR#372

  *) run_method optimized to avoid needless scanning over NULLs in the
     module list.  [Dean Gaudet]
  
  *) Revamp of (unix) scoreboard management code such that it avoids
     unnecessary traversals of the scoreboard on each hit.  This is
     particularly important for high volume sites with a large
     HARD_SERVER_LIMIT.  Some of the previous operations were O(n^2),
     and are now O(n).  See also SCOREBOARD_MAINTENANCE_INTERVAL in
     httpd.h. [Dean Gaudet]

  *) In configurations using multiple Listen statements it was possible for
     busy sockets to starve other sockets of service.  [Dean Gaudet]

  *) Added hook so standalone_main can be replaced at compile time
     (define STANDALONE_MAIN)
     [Doug MacEachern]

  *) Lowest-level read/write functions in buff.c will be replaced with
     the SFIO library calls sfread/sfwrite if B_SFIO is defined at
     compile time.  The default sfio discipline will behave as apache
     would without sfio compiled in.
     [Doug MacEachern]
                
  *) Enhance UserDir directive (mod_userdir) to accept a list of
     usernames for the 'disable' keyword, and add 'enable user...' to
     selectively *en*able userdirs if they're globally disabled.
     [Ken Coar]

  *) If NETSCAPE_DBM_COMPAT is defined in EXTRA_CFLAGS then Apache
     will work with Netscape dbm files.  (dbmmanage will probably not
     work however.) [Alexander Spohr <aspohr@netmatic.com>] PR#444

  *) Add a ListenBacklog directive to control the backlog parameter
     passed to listen().  Also change the default to 511 from 512.
     [Marc Slemko]

  *) API: A new handler response DONE which informs apache that the
     request has been handled and it can finish off quickly, similar to
     how it handles errors. [Rob Hartill]

  *) Turn off chunked encoding after sending terminating chunk/footer
     so that we can't do it twice by accident. [Roy Fielding]
  
  *) mod_expire also issues Cache-Control: max-age headers.
     [Rob Hartill]

  *) API: Added kill_only_once option for free_proc_chain so that it won't
     aggressively try to kill off specific children.  For fastcgi.
     [Stanley Gambarin <gambarin@OpenMarket.com>]

  *) mod_auth deals with extra ':' delimited fields.  [Marc Slemko]

  *) Added IconHeight and IconWidth to mod_dir's IndexOptions directive.
     When used together, these cause mod_dir to emit HEIGHT and WIDTH
     attributes in the FancyIndexing IMG tags.  [Ken Coar]

  *) PORT: Sequent and SONY NEWS-OS support added.  [Jim Jagielski]

  *) PORT: Added Windows NT support
     [Ben Laurie and Ambarish Malpani <ambarish@valicert.com>]

Changes with Apache 1.2.4

  *) The ProxyRemote change in 1.2.3 introduced a bug resulting in the proxy
     always making requests with the full-URI instead of just the URI path.
     [Marc Slemko, Roy Fielding]

  *) Add -lm for AIX versions >= 4.2 to allow Apache to link properly
     on this platform.  [Marc Slemko]

Changes with Apache 1.2.3

  *) The request to a remote proxy was mangled if it was generated as the
     result of a ProxyPass directive. URL schemes other than http:// were not
     supported when ProxyRemote was used. PR#260, PR#656, PR#699, PR#713,
     PR#812 [Lars Eilebrecht]

  *) Fixed proxy-pass-through feature of mod_rewrite; Added error logging
     information for case where proxy module is not available. [Marc Slemko]

  *) Force proxy to always respond as HTTP/1.0, which it was failing to
     do for errors and cached responses.  [Roy Fielding]

  *) PORT: Improved support for ConvexOS 11.  [Jeff Venters]

Changes with Apache 1.2.2 [not released]

  *) Fixed another long-standing bug in sub_req_lookup_file where it would
     happily skip past access checks on subdirectories looked up with relative
     paths.  (It's used by mod_dir, mod_negotiation, and mod_include.)
     [Dean Gaudet]

  *) Add lockfile name to error message printed out when
     USE_FLOCK_SERIALIZED_ACCEPT is defined.
     [Marc Slemko]

  *) Enhanced the chunking and error handling inside the buffer functions.
     [Dean Gaudet, Roy Fielding]

  *) When merging the main server's <Directory> and <Location> sections into
     a vhost, put the main server's first and the vhost's second.  Otherwise
     the vhost can't override the main server.  [Dean Gaudet] PR#717

  *) The <Directory> code would merge and re-merge the same section after
     a match was found, possibly causing problems with some modules.
     [Dean Gaudet]

  *) Fixed an infinite loop in mod_imap for references above the server root.
     [Dean Gaudet] PR#748

  *) mod_include cleanup showed that handle_else was being used to handle
     endif.  It didn't cause problems, but it was cleaned up too.
     [Howard Fear]

  *) Last official synchronization of mod_rewrite with author version (because
     mod_rewrite is now directly developed by the author at the Apache Group):
     o added diff between mod_rewrite 3.0.6+ and 3.0.9
       minus WIN32/NT stuff, but plus copyright removement.
       In detail:
       - workaround for detecting infinite rewriting loops
       - fixed setting of env vars when "-" is used as subst string
       - fixed forced response code on redirects (PR#777)
       - fixed cases where r->args is ""
       - kludge to disable locking on pipes under braindead SunOS
       - fix for rewritelog in cases where remote hostname is unknown
       - fixed totally damaged request_rec walk-back loop
     o remove static from local data and add static to global ones.
     o replaced ugly proxy finding stuff by simple
       find_linked_module("mod_proxy") call.
     o added missing negation char on rewritelog()
     o fixed a few comment typos
     [Ralf S. Engelschall]

  *) Anonymous_LogEmail was logging on each subrequest.
     [Dean Gaudet] PR#421, PR#868

  *) "force-response-1.0" now only applies to requests which are HTTP/1.0 to
     begin with.  "nokeepalive" now works for HTTP/1.1 clients.  Added
     "downgrade-1.0" which causes Apache to pretend it received a 1.0.
     Additionally mod_browser now triggers during translate_name to workaround
     a deficiency in the header_parse phase.
     [Dean Gaudet] PR#875

  *) get_client_block() returns wrong length if policy is 
     REQUEST_CHUNKED_DECHUNK.
     [Kenichi Hori <ken@d2.bs1.fc.nec.co.jp>] PR#815

  *) Properly treat <files> container like other containers in mod_info.
     [Marc Slemko] PR#848

  *) The proxy didn't treat the "Host:" keyword of the host header as case-
     insensitive.  The proxy would corrupt the first line of a response from
     an HTTP/0.9 server.  [Kenichi Hori <ken@d2.bs1.fc.nec.co.jp>] PR#813,814

  *) mod_include would log some bogus values occasionally.
     [Skip Montanaro <skip@calendar.com>, Marc Slemko] PR#797

  *) PORT: The slack fd changes in 1.2.1 introduced a problem with SIGHUP
     under Solaris 2.x (up through 2.5.1).  It has been fixed.
     [Dean Gaudet] PR#832

  *) API: In HTTP/1.1, whether or not a request message contains a body
     is independent of the request method and based solely on the presence
     of a Content-Length or Transfer-Encoding.  Therefore, our default
     handlers need to be prepared to read a body even if they don't know
     what to do with it; otherwise, the body would be mistaken for the
     next request on a persistent connection.  discard_request_body()
     has been added to take care of that.  [Roy Fielding] PR#378

  *) API: Symbol APACHE_RELEASE provides a numeric form of the Apache
     release version number, such that it always increases along the
     same lines as our source code branching.  [Roy Fielding]

  *) Minor oversight on multiple variants fixed.  [Paul Sutton] PR#94

Changes with Apache 1.2.1

  *) SECURITY: Don't serve file system objects unless they are plain files,
     symlinks, or directories.  This prevents local users from using pipes
     or named sockets to invoke programs for an extremely crude form of
     CGI.  [Dean Gaudet]

  *) SECURITY: HeaderName and ReadmeName were settable in .htaccess and
     could contain "../" allowing a local user to "publish" any file on
     the system.  No slashes are allowed now.  [Dean Gaudet]

  *) SECURITY: It was possible to violate the symlink Options using mod_dir
     (headers, readmes, titles), mod_negotiation (type maps), or
     mod_cern_meta (meta files).  [Dean Gaudet]

  *) SECURITY: Apache will refuse to run as "User root" unless
     BIG_SECURITY_HOLE is defined at compile time.  [Dean Gaudet]

  *) CONFIG: If a symlink pointed to a directory then it would be disallowed
     if it contained a .htaccess disallowing symlinks.  This is contrary
     to the rule that symlink permissions are tested with the symlink
     options of the parent directory.  [Dean Gaudet] PR#353

  *) CONFIG: The LockFile directive can be used to place the serializing
     lockfile in any location.  It previously defaulted to /usr/tmp/htlock.
     [Somehow it took four of us: Randy Terbush, Jim Jagielski, Dean Gaudet,
     Marc Slemko]

  *) Request processing now retains state of whether or not the request
     body has been read, so that internal redirects and subrequests will
     not try to read it twice (and block). [Roy Fielding]

  *) Add a placeholder in modules/Makefile to avoid errors with certain
     makes. [Marc Slemko]

  *) QUERY_STRING was unescaped in mod_include, it shouldn't be.
     [Dean Gaudet] PR#644

  *) mod_include was not properly changing the current directory.
     [Marc Slemko] PR#742

  *) Attempt to work around problems with third party libraries that do not
     handle high numbered descriptors (examples include bind, and
     solaris libc).  On all systems apache attempts to keep all permanent
     descriptors above 15 (called the low slack line).  Solaris users
     can also benefit from adding -DHIGH_SLACK_LINE=256 to EXTRA_CFLAGS
     which keeps all non-FILE * descriptors above 255.  On all systems
     this should make supporting large numbers of vhosts with many open
     log files more feasible.  If this causes trouble please report it,
     you can disable this workaround by adding -DNO_SLACK to EXTRA_CFLAGS.
     [Dean Gaudet] various PRs

  *) Related to the last entry, network sockets are now opened before
     log files are opened.  The only known case where this can cause
     problems is under Solaris with many virtualhosts and many Listen
     directives.  But using -DHIGH_SLACK_LINE=256 described above will
     work around this problem.  [Dean Gaudet]

  *) USE_FLOCK_SERIALIZED_ACCEPT is now default for FreeBSD, A/UX, and
     SunOS 4.

  *) Improved unix error response logging.  [Marc Slemko]

  *) Update mod_rewrite from 3.0.5 to 3.0.6.  New ruleflag
     QSA=query_string_append.  Also fixed a nasty bug in per-dir context:
     when a URL http://... was used in conjunction with a special
     redirect flag, e.g. R=permanent, the permanent status was lost.
     [Ronald Tschalaer <Ronald.Tschalaer@psi.ch>, Ralf S. Engelschall]

  *) If an object has multiple variants that are otherwise equal Apache
     would prefer the last listed variant rather than the first.
     [Paul Sutton] PR#94

  *) "make clean" at the top level now removes *.o.  [Dean Gaudet] PR#752

  *) mod_status dumps core in inetd mode.  [Marc Slemko and Roy Fielding]
     PR#566

  *) pregsub had an off-by-1 in its error checking code. [Alexei Kosut]

  *) PORT: fix rlim_t problems with AIX 4.2. [Marc Slemko] PR#333

  *) PORT: Update UnixWare support for 2.1.2.
     [Lawrence Rosenman <ler@lerctr.org>] PR#511

  *) PORT: NonStop-UX [Joachim Schmitz <schmitz_joachim@tandem.com>] PR#327

  *) PORT: Update ConvexOS support for 11.5.
     [David DeSimone <fox@convex.com>] PR#399

  *) PORT: Support for DEC cc compiler under ULTRIX.
     ["P. Alejandro Lopez-Valencia" <alejolo@ideam.gov.co>] PR#388

  *) PORT: Support for Maxion/OS SVR4.2 Real Time Unix. [no name given] PR#383

  *) PORT: Workaround for AIX 3.x compiler bug in http_bprintf.c.  
     [Marc Slemko] PR#725
  
  *) PORT: fix problem compiling http_bprintf.c with gcc under SCO
     [Marc Slemko] PR#695

Changes with Apache 1.2

Changes with Apache 1.2b11

  *) Fixed open timestamp fd in proxy_cache.c [Chuck Murcko]

  *) Added undocumented perl SSI mechanism for -DUSE_PERL_SSI and mod_perl.
     [Doug MacEachern, Rob Hartill]

  *) Proxy needs to use hard_timeout instead of soft_timeout when it is
     reading from one buffer and writing to another, at least until it has
     a custom timeout handler.  [Roy Fielding and Petr Lampa]

  *) Fixed problem on IRIX with servers hanging in IdentityCheck,
     apparently due to a mismatch between sigaction and setjmp.
     [Roy Fielding] PR#502

  *) Log correct status code if we timeout before receiving a request (408)
     or if we received a request-line that was too long to process (414).
     [Ed Korthof and Roy Fielding] PR#601

  *) Virtual hosts with the same ServerName, but on different ports, were
     not being selected properly.  [Ed Korthof]

  *) Added code to return the requested IP address from proxy_host2addr()
     if gethostbyaddr() fails due to reverse DNS lookup problems. Original
     change submitted by Jozsef Hollosi <hollosi@sbcm.com>.
     [Chuck Murcko] PR#614

  *) If multiple requests on a single connection are used to retrieve
     data from different virtual hosts, the virtual host list would be
     scanned starting with the most recently used VH instead of the first,
     causing most virtual hosts to be ignored.
     [Paul Sutton and Martin Mares] PR#610

  *) The OS/2 handling of process group was broken by a porting patch for
     MPE, so restored prior code for OS/2.  [Roy Fielding and Garey Smiley]

  *) Inherit virtual server port from main server if none (or "*") is
     given for VirtualHost.  [Dean Gaudet] PR#576

  *) If the lookup for a DirectoryIndex name with content negotiation
     has found matching variants, but none are acceptable, return the
     negotiation result if there are no more DirectoryIndex names to lookup.
     [Petr Lampa and Roy Fielding]

  *) If a soft_timeout occurs after keepalive is set, then the main child
     loop would try to read another request even though the connection
     has been aborted.  [Roy Fielding]

  *) Configure changes: Allow for whitespace at the start of a
     Module declaration. Also, be more understanding about the
     CC=/OPTIM= format in Configuration. Finally, fix compiler
     flags if using HP-UX's cc compiler. [Jim Jagielski]

  *) Subrequests and internal redirects now inherit the_request from the
     original request-line. [Roy Fielding]

  *) Test for error conditions before creating output header fields, since
     we don't want the error message to include those fields.  Likewise,
     reset the content_language(s) and content_encoding of the response
     before generating or redirecting to an error message, since the new
     message will have its own Content-* definitions. [Dean Gaudet]

  *) Restored the semantics of headers_out (headers sent only with 200..299
     and 304 responses) and err_headers_out (headers sent with all responses).
     Avoid the overhead of copying tables if err_headers_out is empty
     (the usual case).  [Roy Fielding]

  *) Fixed a couple places where a check for the default Content-Type was
     not properly checking both the value configured by the DefaultType
     directive and the DEFAULT_TYPE symbol in httpd.h.  Changed the value
     of DEFAULT_TYPE to match the documented default (text/plain).
     [Dean Gaudet] PR#506

  *) Escape the HTML-sensitive characters in the Request-URI that is
     output for each child by mod_status. [Dean Gaudet and Ken Coar] PR#501

  *) Properly initialize the flock structures used by the mutex locking
     around accept() when USE_FCNTL_SERIALIZED_ACCEPT is defined.
     [Marc Slemko]

  *) The method for determining PATH_INFO has been restored to the pre-1.2b
     (and NCSA httpd) definition wherein it was the extra path info beyond
     the CGI script filename.  The environment variable FILEPATH_INFO has
     been removed, and instead we supply the original REQUEST_URI to any
     script that wants to be Apache-specific and needs the real URI path.
     This solves a problem with existing scripts that use extra path info
     in the ScriptAlias directive to pass options to the CGI script.
     [Roy Fielding]

  *) The _default_ change in 1.2b10 will change the behaviour on configs
     that use multiple Listen statements for listening on multiple ports.
     But that change is necessary to make _default_ consistent with other
     forms of <VirtualHost>.  It requires such configs to be modified
     to use <VirtualHost _default_:*>.  The documentation has been
     updated.  [Dean Gaudet] PR#530

  *) If an ErrorDocument CGI script is used to respond to an error
     generated by another CGI script which has already read the message
     body of the request, the server would block trying to read the
     message body again.  [Rob Hartill]

  *) signal() replacement conflicted with a define on QNX (and potentially
     other platforms). Fixed. [Ben Laurie] PR#512

Changes with Apache 1.2b10

  *) Allow HTTPD_ROOT, SERVER_CONFIG_FILE, DEFAULT_PATH, and SHELL_PATH
     to be configured via -D in Configuration.  [Dean Gaudet] PR#449

  *) <VirtualHost _default_:portnum> didn't work properly.  [Dean Gaudet]

  *) Added prototype for mktemp() for SUNOS4 [Marc Slemko]

  *) In mod_proxy.c, check return values for proxy_host2addr() when reading
     config, in case the hostent struct returned is trash.
     [Chuck Murcko] PR #491

  *) Fixed the fix in 1.2b9 for parsing URL query info into args for CGI
     scripts.  [Dean Gaudet, Roy Fielding, Marc Slemko]

Changes with Apache 1.2b9  [never announced]

  *) Reset the MODULE_MAGIC_NUMBER to account for the unsigned port
     changes and in anticipation of 1.2 final release.  [Roy Fielding]

  *) Fix problem with scripts not receiving a SIGPIPE when client drops
     the connection (e.g., when user presses Stop).  Apache will now stop
     trying to send a message body immediately after an error from write.
     [Roy Fielding and Nathan Kurz] PR#335

  *) Rearrange Configuration.tmpl so that mod_rewrite has higher priority
     than mod_alias, and mod_alias has higher priority than mod_proxy;
     rearranged other modules to enhance understanding of their purpose
     and relative order (and maybe even reduce some overhead).
     [Roy Fielding and Sameer Parekh]

  *) Fix graceful restart.  Eliminate many signal-related race
     conditions in both forms of restart, and in SIGTERM.  See
     htdocs/manual/stopping.html for details on stopping and
     restarting the parent.  [Dean Gaudet]

  *) Fix memory leaks in mod_rewrite, mod_browser, mod_include.  Tune
     memory allocator to avoid a behaviour that required extra blocks to
     be allocated.  [Dean Gaudet]

  *) Allow suexec to access files relative to current directory but not
     above.  (Excluding leading / or any .. directory.)  [Ken Coar]
     PR#269, 319, 395

  *) Fix suexec segfault when group doesn't exist. [Gregory Neil Shapiro]
     PR#367, 368, 354, 453

  *) Fix the above fix: if suexec is enabled, avoid destroying r->url
     while obtaining the /~user and save the username in a separate data
     area so that it won't be overwritten by the call to getgrgid(), and
     fix some misuse of the pool string allocation functions.  Also fixes
     a general problem with parsing URL query info into args for CGI scripts.
     [Roy Fielding] PR#339, 367, 354, 453

  *) Fix IRIX warning about bzero undefined. [Marc Slemko]

  *) Fix problem with <Directory proxy:...>. [Martin Kraemer] PR#271

  *) Corrected spelling of "authoritative".  AuthDBAuthoratative became
     AuthDBAuthoritative. [Marc Slemko] PR#420

  *) MaxClients should be at least 1. [Lars Eilebrecht] PR#375

  *) The default handler now logs invalid methods or URIs (i.e. PUT on an
     object that can't be PUT, or FOOBAR for some method FOOBAR that
     apache doesn't know about at all).  Log 404s that occur in mod_include.
     [Paul Sutton, John Van Essen]

  *) If a soft timeout (or lingerout) occurs while trying to flush a
     buffer or write inside buff.c or fread'ing from a CGI's output,
     then the timeout would be ignored. [Roy Fielding] PR#373

  *) Work around a bug in Netscape Navigator versions 2.x, 3.x and 4.0b2's
     parsing of headers.  If the terminating empty-line CRLF occurs starting
     at the 256th or 257th byte of output, then Navigator will think a normal
     image is invalid.  We are guessing that this is because their initial
     read of a new request uses a 256 byte buffer. We check the bytes written
     so far and, if we are about to tickle the bug, we instead insert a
     padding header of eminent bogosity. [Roy Fielding and Dean Gaudet] PR#232

  *) Fixed SIGSEGV problem when a DirectoryIndex file is also the source
     of an external redirection.  [Roy Fielding and Paul Sutton]

  *) Configure would create a broken Makefile if the configuration file
     contained a commented-out Rule.  [Roy Fielding]

  *) Promote per_dir_config and subprocess_env from the subrequest to the
     main request in mod_negotiation.  In particular this fixes a bug
     where <Files> sections wouldn't properly apply to negotiated content.
     [Dean Gaudet]

  *) Fix a potential deadlock in mod_cgi script_err handling.
     [Ralf S. Engelschall]

  *) rotatelogs zero-pads the logfile names to improve alphabetic sorting.
     [Mitchell Blank Jr]

  *) Updated mod_rewrite to 3.0.4: Fixes HTTP redirects from within
     .htaccess files because the RewriteBase was not replaced correctly.
     Updated mod_rewrite to 3.0.5: Fixes problem with rewriting inside
     <Directory> sections missing a trailing /.  [Ralf S. Engelschall]

  *) Clean up Linux settings in conf.h by detecting 2.x versus 1.x.  For
     1.x the settings are those of pre-1.2b8.  For 2.x we include
     USE_SHMGET_SCOREBOARD (scoreboard in shared memory rather than file) and
     HAVE_SYS_RESOURCE_H (enable the RLimit commands).
     [Dean Gaudet] PR#336, PR#340

  *) Redirect did not preserve ?query_strings when present in the client's
     request.  [Dean Gaudet]

  *) Configure was finding non-modules on EXTRA_LIBS. [Frank Cringle] PR#380

  *) Use /bin/sh5 on ULTRIX.  [P. Alejandro Lopez-Valencia] PR#369

  *) Add UnixWare compile/install instructions.  [Chuck Murcko]

  *) Add mod_example (illustration of API techniques).  [Ken Coar]

  *) Add macro for memmove to conf.h for SUNOS4. [Marc Slemko]

  *) Improve handling of directories when filenames have spaces in them.
     [Chuck Murcko]

  *) For hosts with multiple IP addresses, try all additional addresses if
     necessary to get a connect. Fail only if hostent address list is
     exhausted. [Chuck Murcko]

  *) More signed/unsigned port fixes.  [Dean Gaudet]

  *) HARD_SERVER_LIMIT can be defined in the Configuration file now.
     [Dean Gaudet]

Changes with Apache 1.2b8

  *) suexec.c doesn't close the log file, allowing CGIs to continue writing
     to it.  [Marc Slemko]

  *) The addition of <Location> and <File> directives made the
     sub_req_lookup_simple() function bogus, so we now handle
     the special cases directly.  [Dean Gaudet]

  *) We now try to log where the server is dumping core when a fatal
     signal is received.  [Ken Coar]

  *) Improved lingering_close by adding a special timeout, removing the
     spurious log messages, removing the nonblocking settings (they
     are not needed with the better timeout), and adding commentary
     about the NO_LINGCLOSE and USE_SO_LINGER issues.  NO_LINGCLOSE is
     now the default for SunOS4, UnixWare, NeXT, and IRIX.  [Roy Fielding]

  *) Send error messages about setsockopt failures to the server error
     log instead of stderr.  [Roy Fielding]

  *) Fix loopholes in proxy cache expiry vis a vis alarms. [Brian Moore]

  *) Stopgap solution for CGI 3-second delay with server-side includes: if
     processing a subrequest, allocate memory from r->main->pool instead
     of r->pool so that we can avoid waiting for free_proc_chain to cleanup
     in the middle of an SSI request.  [Dean Gaudet] PR #122

  *) Fixed status of response when POST is received for a nonexistent URL
     (was sending 405, now 404) and when any method is sent with a
     full-URI that doesn't match the server and the server is not acting
     as a proxy (was sending 501, now 403).  [Roy Fielding]

  *) Host port changed to unsigned short. [Ken Coar] PR #276

  *) Fix typo in command definition of AuthAuthoritative. [Ken Coar] PR #246

  *) Defined USE_SHMGET_SCOREBOARD for shared memory on Linux.  [Dean Gaudet]

  *) Report extra info from errno with many errors that cause httpd to exit.
     spawn_child, popenf, and pclosef now have valid errno returns in the
     event of an error.  Correct problems where errno was stomped on
     before being reported.  [Dean Gaudet]

  *) In the proxy, if the cache filesystem was full, garbage_coll() was
     never called, and thus the filesystem would remain full indefinitely.
     We now also remove incomplete cache files left if the origin server
     didn't send a Content-Length header and either the client has aborted
     transfer or bwrite() to client has failed. [Petr Lampa]

  *) Fixed the handling of module and script-added header fields.
     Improved the interface for sending header fields and reduced
     the duplication of code between sending okay responses and errors.
     We now always send both headers_out and err_headers_out, and
     ensure that the server-reserved fields are not being overridden,
     while not overriding those that are not reserved.  [Roy Fielding]

  *) Moved transparent content negotiation fields to err_headers_out
     to reflect above changes.  [Petr Lampa]

  *) Fixed the determination of whether or not we should make the
     connection persistent for all of the cases where some other part
     of the server has already indicated that we should not.  Also
     improved the ordering of the test so that chunked encoding will
     be set whenever it is desired instead of only when KeepAlive
     is enabled. Added persistent connection capability for most error
     responses (those that do not indicate a bad input stream) when
     accessed by an HTTP/1.1 client. [Roy Fielding]

  *) Added missing timeouts for sending header fields, error responses,
     and the last chunk of chunked encoding, each of which could have
     resulted in a process being stuck in write forever.  Using soft_timeout
     requires that the sender check for an aborted connection rather than
     continuing after an EINTR.  Timeouts that used to be initiated before
     send_http_header (and never killed) are now initiated only within or
     around the routines that actually do the sending, and not allowed to
     propagate above the caller.  [Roy Fielding]

  *) mod_auth_anon required an @ or a . in the email address, not both.
     [Dirk vanGulik]

  *) per_dir_defaults weren't set correctly until directory_walk for
     name-based vhosts.  This fixes an obscure bug with the wrong config
     info being used for vhosts that share the same ip as the server.
     [Dean Gaudet]

  *) Improved generation of modules/Makefile to be more generic for
     new module directories. [Ken Coar, Chuck Murcko, Roy Fielding]

  *) Generate makefile dependency for Configuration based on the actual
     name given when running the Configure process.  [Dean Gaudet]

  *) Fixed problem with vhost error log not being set prior to
     initializing virtual hosts. [Dean Gaudet]

  *) Fixed infinite loop when a trailing slash is included after a type map
     file URL (extra path info). [Petr Lampa]

  *) Fixed server status updating of per-connection counters. [Roy Fielding]

  *) Add documentation for DNS issues (reliability and security), and try
     to explain the virtual host matching process.  [Dean Gaudet]

  *) Try to continue gracefully by disabling the vhost if a DNS lookup
     fails while parsing the configuration file.  [Dean Gaudet]

  *) Improved calls to setsockopt.  [Roy Fielding]

  *) Negotiation changes: Don't output empty content-type in variant list;
     Output charset in variant list; Return sooner from handle_multi() if
     no variants found; Add handling of '*' wildcard in Accept-Charset.
     [Petr Lampa and Paul Sutton]

  *) Fixed overlaying of request/sub-request notes and headers in
     mod_negotiation.  [Dean Gaudet]

  *) If two variants' charset quality are equal and one is the default
     charset (iso-8859-1), then prefer the variant that was specifically
     listed in Accept-Charset instead of the default.  [Petr Lampa]

  *) Memory allocation problem in push_array() -- it would corrupt memory
     when nalloc==0.  [Kai Risku <krisku@tf.hut.fi> and Roy Fielding]

  *) invoke_handler() doesn't handle mime arguments in content-type
     [Petr Lampa] PR#160

  *) Reduced IdentityCheck timeout to 30 seconds, as per RFC 1413 minimum.
     [Ken Coar]

  *) Fixed problem with ErrorDocument not working for virtual hosts
     due to one of the performance changes in 1.2b7. [Dean Gaudet]

  *) Log an error message if we get a request header that is too long,
     since it may indicate a buffer overflow attack. [Marc Slemko]

  *) Made is_url() allow "[-.+a-zA-Z0-9]+:" as a valid scheme and
     not reject URLs without a double-slash, as per RFC2068 section 3.2.
     [Ken Coar] PR #146, #187

  *) Added table entry placeholder for new header_parser callback
     in all of the distributed modules. [Ken Coar] PR #191

  *) Allow for cgi files without the .EXE extension on them under OS/2.
     [Garey Smiley] PR #59

  *) Fixed error message when resource is not found and URL contains
     path info. [Petr Lampa and Dean Gaudet] PR #40

  *) Fixed user and server confusion over what should be a virtual host
     and what is the main server, resulting in access to something
     other than the name defined in the virtualhost directive (but
     with the same IP address) failing. [Dean Gaudet]

  *) Updated mod_rewrite to version 3.0.2, which: fixes compile error on
     AIX; improves the redirection stuff to enable the users to generally
     redirect to http, https, gopher and ftp; added TIME variable for
     RewriteCond which expands to YYYYMMDDHHMMSS strings and added the
     special patterns >STRING, <STRING and =STRING to RewriteCond, which
     can be used in conjunction with %{TIME} or other variables to create
     time-dependent rewriting rules. [Ralf S. Engelschall]

  *) bpushfd() no longer notes cleanups for the file descriptors it is handed.
     Module authors may need to adjust their code for proper cleanup to take
     place (that is, call note_cleanups_for_fd()). This change fixes problems
     with file descriptors being erroneously closed when the proxy module was
     in use. [Ben Laurie]

  *) Fix bug in suexec reintroduced by changes in 1.2b7 which allows
     initgroups() to hose the group information needed for later
     comparisons. [Randy Terbush]

  *) Remove unnecessary call to va_end() in create_argv() which
     caused a SEGV on some systems.

  *) Use proper MAXHOSTNAMELEN symbol for limiting length of server name.
     [Dean Gaudet]

  *) Clear memory allocated for listeners. [Randy Terbush]

  *) Improved handling of IP address as a virtualhost address and
     introduced "_default_" as a synonym for the default vhost config.
     [Dean Gaudet] PR #212

Changes with Apache 1.2b7

  *) Port to  UXP/DS(V20) [Toshiaki Nomura <nom@yk.fujitsu.co.jp>]

  *) unset Content-Length if chunked (RFC-2068) [Petr Lampa]

  *) mod_negotiation fixes [Petr Lampa] PR#157, PR#158, PR#159
     - replace protocol response numbers with symbols
     - save variant-list into main request notes
     - free allocated memory from subrequests
     - merge notes, headers_out and err_headers_out

  *) changed status check mask in proxy_http.c from "HTTP/#.# ### *" to
     "HTTP/#.# ###*" to be more lenient about what we accept.
     [Chuck Murcko]

  *) more proxy FTP bug fixes:
     - Changed send_dir() to remove user/passwd from displayed URL.
     - Changed login error messages to be more descriptive.
     - remove setting of SO_DEBUG socket option
     - Make ftp_getrc() more lenient about multiline responses,
       specifically, 230 responses which don't have continuation 230-
       on each line). These seem to be all NT FTP servers, and while
       perhaps questionable, they appear to be legal by RFC 959.
     - Add missing kill_timeout() after transfer to user completes.
     [Chuck Murcko]

  *) Fixed problem where a busy server could hang when restarting
     after being sent a SIGHUP due to child processes not exiting.
     [Marc Slemko]

  *) Modify mod_include escaping so a '\' only signifies an escaped
     character if the next character is one that needs
     escaping.  [Ben Laurie]

  *) Eliminated possible infinite loop in mod_imap when relative URLs are
     used with a 'base' directive that does not have a '/' in it.
     [Marc Slemko, reported by Onno Witvliet <onno@tc.hsa.nl>]

  *) Reduced the default timeout from 1200 seconds to 300, and the
     one in the sample configfile from 400 to 300.  [Marc Slemko]

  *) Stop vbprintf from crashing if given a NULL string pointer;
     print (null) instead.  [Ken Coar]

  *) Don't disable Nagle algorithm if system doesn't have TCP_NODELAY.
     [Marc Slemko and Roy Fielding]

  *) Fixed problem with mod_cgi-generated internal redirects trying to
     read the request message-body twice. [Archie Cobbs and Roy Fielding]

  *) Reduced timeout on lingering close, removed possibility of a blocked
     read causing the child to hang, and stopped logging of errors if
     the socket is not connected (reset by client).  [Roy Fielding]

  *) Rearranged main child loop to remove duplication of code in
     select/accept and keep-alive requests, fixed several bugs regarding
     checking scoreboard_image for exit indication and failure to
     account for all success conditions and trap all error conditions,
     prevented multiple flushes before closing the socket; close the entire
     socket buffer instead of just one descriptor, prevent logging of
     EPROTO and ECONNABORTED on platforms where supported, and generally
     improved readability.  [Roy Fielding]

  *) Extensive performance improvements. Cleaned up inefficient use of
     auto initializers, multiple is_matchexp calls on a static string,
     and excessive merging of response_code_strings. [Dean Gaudet]

  *) Added double-buffering to mod_include to improve performance on
     server-side includes. [Marc Slemko]

  *) Several fixes for suexec wrapper. [Randy Terbush]
     - Make wrapper work for files on NFS filesystem.
     - Fix portability problem of MAXPATHLEN.
     - Fix array overrun problem in clean_env().
     - Fix allocation of PATH environment variable

  *) Removed extraneous blank line is description of mod_status chars.
     [Kurt Kohler]

  *) Logging of errors from the call_exec routine simply went nowhere,
     since the logfile fd has been closed, so now we send them to stderr.
     [Harald T. Alvestrand]

  *) Fixed core dump when DocumentRoot is a CGI.
     [Ben Laurie, reported by geddis@tesserae.com]

  *) Fixed potential file descriptor leak in mod_asis; updated it and
     http_core to use pfopen/pfclose instead of fopen/fclose.
     [Randy Terbush and Roy Fielding]

  *) Fixed handling of unsigned ints in ap_snprintf() on some chips such
     as the DEC Alpha which is 64-bit but uses 32-bit ints.
     [Dean Gaudet and Ken Coar]

  *) Return a 302 response code to the client when sending a redirect
     due to a missing trailing '/' on a directory instead of a 301; now
     it is cacheable. [Markus Gyger]

  *) Fix condition where, if a bad directive occurs in .htaccess, and
     sub_request() goes first to this directory, then log_reason() will
     SIGSEGV because it doesn't have initialized r->per_dir_config.
     [PR#162 from Petr Lampa, fix by Marc Slemko and Dean Gaudet]

  *) Fix handling of lang_index in is_variant_better().  This was
     causing problems which resulted in the server sending the
     wrong language document in some cases. [Petr Lampa]

  *) Remove free() from clean_env() in suexec wrapper. This was nuking
     the clean environment on some systems.

  *) Tweak byteserving code (e.g. serving PDF files) to work around
     bugs in Netscape Navigator and Microsoft Internet Explorer.
     Emit Content-Length header when sending multipart/byteranges.
     [Alexei Kosut]

  *) Port to HI-UX/WE2. [Nick Maclaren]

  *) Port to HP MPE operating system for HP 3000 machines
     [Mark Bixby <markb@cccd.edu>]

  *) Fixed bug which caused a segmentation fault if only one argument
     given to RLimit* directives. [Ed Korthof]

  *) Continue persistent connection after 204 or 304 response. [Dean Gaudet]

  *) Improved buffered output to the client by delaying the flush decision
     until the BUFF code is actually about to read the next request.
     This fixes a problem introduced in 1.2b5 with clients that send
     an extra CRLF after a POST request. Also improved chunked output
     performance by combining writes using writev() and removing as
     many bflush() calls as possible.  NOTE: Platforms without writev()
     must add -DNO_WRITEV to the compiler CFLAGS, either in Configuration
     or Configure, unless we have already done so.  [Dean Gaudet]

  *) Fixed mod_rewrite bug which truncated the rewritten URL [Marc Slemko]

  *) Fixed mod_info output corruption bug introduced by buffer overflow
     fixes. [Dean Gaudet]

  *) Fixed http_protocol to correctly output all HTTP/1.1 headers, including
     for the special case of a 304 response.  [Paul Sutton]

  *) Improved handling of TRACE method by bypassing normal method handling
     and header parsing routines; fixed Allow response to always allow TRACE.
     [Dean Gaudet]

  *) Fixed compiler warnings in the regex library. [Dean Gaudet]

  *) Cleaned-up some of the generated HTML. [Ken Coar]

Changes with Apache 1.2b6

  *) Allow whitespace in imagemap mapfile coordinates. [Marc Slemko]

  *) Fix typo introduced in fix for potential infinite loop around
     accept() in child_main(). This change caused the rev to 1.2b6.
     1.2b5 was never a public beta.

Changes with Apache 1.2b5

  *) Change KeepAlive semantics (On|Off instead of a number), add
     MaxKeepAliveRequests directive. [Alexei Kosut]

  *) Various NeXT compilation patches, as well as a change in
     regex/regcomp.c since that file also used a NEXT define.
     [Andreas Koenig]

  *) Allow * to terminate the end of a directory match in mod_dir.
     Allows /~* to match for both /~joe and /~joe/. [David Bronder]

  *) Don't call can_exec() if suexec_enabled. Calling this requires
     scripts executed by the suexec wrapper to be world executable, which
     defeats one of the advantages of running the wrapper. [Randy Terbush]

  *) Portability Fix: IRIX complained with 'make clean' about *pure* (removed)
     [Jim Jagielski]

  *) Migration from sprintf() to snprintf() to avoid buffer
     overflows. [Marc Slemko]

  *) Provide portable snprintf() implementation (ap_snprintf)
     as well as *cvt family. [Jim Jagielski]

  *) Portability Fix: NeXT lacks unistd.h so we wrap it's inclusion
     [Jim Jagielski]

  *) Remove mod_fastcgi.c from the distribution. This module appears
     to be maintained more through the Open Market channels and should
     continue to be easily available at http://www.fastcgi.com/

  *) Fixed bug in modules/Makefile that wouldn't allow building in more
     than one subdirectory (or cleaning, either). [Jeremy Laidman]

  *) mod_info assumed that the config files were relative to ServerRoot.
     [Ken the Rodent]

  *) CGI scripts called as an error document resulting from failed
     CGI execution would hang waiting for POST'ed data. [Rob Hartill]

  *) Log reason when mod_dir returns access HTTP_FORBIDDEN
     [Ken the Rodent]

  *) Properly check errno to prevent display of a directory index
     when server receives a long enough URL to confuse stat().
     [Marc Slemko]

  *) Several security enhancements to suexec wrapper. It is _highly_
     recommended that previously installed versions of the wrapper
     be replaced with this version.  [Randy Terbush, Jason Dour]

        - ~user execution now properly restricted to ~user's home
          directory and below.
        - execution restricted to UID/GID > 100
        - restrict passed environment to known variables
        - call setgid() before initgroups() (portability fix)
        - remove use of setenv() (portability fix)

  *) Add HTTP/1.0 response forcing. [Ben Laurie]

  *) Add access control via environment variables. [Ben Laurie]

  *) Add rflush() function. [Alexei Kosut]

  *) remove duplicate pcalloc() call in new_connection().

  *) Fix incorrect comparison which could allow number of children =
     MaxClients + 1 if less than HARD_SERVER_LIMIT. Also fix potential
     problem if StartServers > HARD_SERVER_LIMIT. [Ed Korthof]

  *) Updated support for OSes (MachTen, ULTRIX, Paragon, ISC, OpenBSD
     AIX PS/2, CONVEXOS. [Jim Jagielski]

  *) Replace instances of inet_ntoa() with inet_addr() for ProxyBlock.
     It's more portable. [Martin Kraemer]

  *) Replace references to make in Makefile.tmpl with $(MAKE).
     [Chuck Murcko]

  *) Add ProxyBlock directive w/IP address caching. Add IP address
     caching to NoCache directive as well. ProxyBlock works with all
     handlers; NoCache now also works with FTP for anonymous logins.
     Still more code cleanup. [Chuck Murcko]

  *) Add "header parse" API hook [Ben Laurie]

  *) Fix byte ordering problems for REMOTE_PORT [Chuck Murcko]

  *) suEXEC wrapper was freeing memory that had not been malloc'ed.

  *) Correctly allow access and auth directives in <Files> sections in
     server config files. [Alexei Kosut]

  *) Fix bug with ServerPath that could cause certain files to be not
     found by the server. [Alexei Kosut]

  *) Fix handling of ErrorDocument so that it doesn't remove a trailing
     double-quote from text and so that it properly checks for unsupported
     status codes using the new index_of_response interface. [Roy Fielding]

  *) Multiple fixes to the lingering_close code in order to avoid being
     interrupted by a stray timeout, to avoid lingering on a connection
     that has already been aborted or never really existed, to ensure that
     we stop lingering as soon as any error condition is received, and to
     prevent being stuck indefinitely if the read blocks.  Also improves
     reporting of error conditions.  [Marc Slemko and Roy Fielding]

  *) Fixed initialization of parameter structure for sigaction.
     [mgyger@itr.ch, Adrian Filipi-Martin]

  *) Fixed reinitializing the parameters before each call to accept and
     select, and removed potential for infinite loop in accept.
     [Roy Fielding, after useful PR from adrian@virginia.edu]

  *) Fixed condition where, if a child fails to fork, the scoreboard would
     continue to say SERVER_STARTING forever. Eventually, the main process
     would refuse to start new children because count_idle_servers() will
     count those SERVER_STARTING entries and will always report that there
     are enough idle servers. [Phillip Vandry]

  *) Fixed bug in bcwrite regarding failure to account for partial writes.
     Avoided calling bflush() when the client is pipelining requests.
     Removed unnecessary flushes from http_protocol. [Dean Gaudet]

  *) Added description of "." mode in server-status [Jim Jagielski]


Changes with Apache 1.2b4:

  *) Fix possible race condition in accept_mutex_init() that
     could leave a small security hole open allowing files to be
     overwritten in cases where the server UID has write permissions.
     [Marc Slemko]

  *) Fix awk compatibilty problem in Configure. [Jim Jagielski]

  *) Fix portablity problem in util_script where ARG_MAX may not be
     defined for some systems.

  *) Add changes to allow compilation on Machten 4.0.3 for PowerPC.
     [Randal Schwartz]

  *) OS/2 changes to support an MMAP style scoreboard file and UNIX
     style magic #! token for better script portability. [Garey Smiley]

  *) Fix bug in suexec wrapper introduced in b3 that would cause failed
     execution for ~userdir CGI. [Jason Dour]

  *) Fix initgroups() business in suexec wrapper. [Jason Dour]

  *) Fix month off by one in suexec wrapper logging.

Changes with Apache 1.2b3:

  *) Fix error in mod_cgi which could cause resources not to be properly
     freed, or worse. [Dean Gaudet]

  *) Fix find_string() NULL pointer dereference. [Howard Fear]

  *) Add set_flag_slot() at the request of Dirk and others.
     [Dirk vanGulik]

  *) Sync mod_rewrite with patch level 10. [Ralf Engelschall]

  *) Add changes to improve the error message given for invalid
     ServerName parameters. [Dirk vanGulik]

  *) Add "Authoritative" directive for Auth modules that don't
     currently have it. This gives admin control to assign authoritative
     control to an authentication scheme and allow "fall through" for
     those authentication modules that aren't "Authoritative" thereby
     allowing multiple authentication mechanisms to be chained.
     [Dirk vanGulik]

  *) Remove requirement for ResourceConfig/AccessConfig if not using
     the three config file layout. [Randy Terbush]

  *) Add PASV mode to mod_proxy FTP handler. [Chuck Murcko]

  *) Changes to suexec wrapper to fix the following problems:
     1.  symlinked homedirs will kill ~userdirs.
     2.  initgroups() on Linux 2.0.x clobbers gr->grid.
     3.  CGI command lines paramters problems
     4.  pw-pwdir for "docroot check" still the httpd user's pw record.
    [Randy Terbush, Jason Dour]

  *) Change create_argv() to accept variable arguments. This fixes
     a problem where arguments were not getting passed to the CGI via
     argv[] when the suexec wrapper was active. [Randy Terbush, Jake Buchholz]

  *) Collapse multiple slashes in path URLs to properly apply
     handlers defined by <Location>. [Alexei Kosut]

  *) Define a sane set of DEFAULT_USER and DEFAULT_GROUP values for AIX.

  *) Improve the accuracy of request duration timings by setting
     r->request_time in read_request_line() instead of read_request().
     [Dean Gaudet]

  *) Reset timeout while reading via get_client_block() in mod_cgi.c
     Fixes problem with timed out transfers of large files. [Rasmus Lerdorf]

  *) Add the ability to pass different Makefile.tmpl files to Configure
     using the -make flag. [Rob Hartill]

  *) Fix coredump triggered when sending a SIGHUP to the server caused
     by an assertion failure, in turn caused by an uninitialised field in a
     listen_rec.
     [Ben Laurie]

  *) Add FILEPATH_INFO variable to CGI environment, which is equal to
     PATH_INFO from previous versions of Apache (in certain situations,
     Apache 1.2's PATH_INFO will be different than 1.1's). [Alexei Kosut]
     [later removed in 1.2b11]

  *) Add rwrite() function to API to allow for sending strings of
     arbitrary length. [Doug MacEachern]

  *) Remove rlim_t typedef for NetBSD. Do older versions need this?

  *) Defined rlim_t and WANTHSREGEX=yes and fixed waitpid() substitute for
     NeXT. [Jim Jagielski]

  *) Removed recent modification to promote the status code on internal
     redirects, since the correct fix was to change the default log format
     in mod_log_config so that it outputs the original status. [Rob Hartill]

Changes with Apache 1.2b2:

  *) Update set_signals() to use sigaction() for setting handlers.
     This appears to fix a re-entrant problem in the seg_fault()
     bus_error() handlers. [Randy Terbush]

  *) Changes to allow mod_status compile for OS/2 [Garey Smiley]

  *) changes for DEC AXP running OSF/1 v3.0. [Marc Evans]

  *) proxy_http.c bugfixes:  [Chuck Murcko]
        1) fixes possible NULL pointer reference w/NoCache
        2) fixes NoCache behavior when using ProxyRemote (ProxyRemote
           host would cache nothing if it was in the local domain,
           and the local domain was in the NoCache list)
        3) Adds Host: header when not available
        4) Some code cleanup and clarification

  *) mod_include.c bugfixes:
        1) Fixed an ommission that caused include variables to not
           be parsed in config errmsg directives [Howard Fear]
        2) Remove HAVE_POSIX_REGEX cruft [Alexei Kosut]
        3) Patch to fix compiler warnings [perrot@lal.in2p3.fr]
        4) Allow backslash-escaping to all quoted text
           [Ben Yoshino <ben@wiliki.eng.hawaii.edu>]
        5) Pass variable to command line if not set in XSSI's env
           [Howard Fear]

  *) Fix infinite loop when processing Content-language lines in
     type-map files. [Alexei Kosut]

  *) Closed file-globbing hole in test-cgi script. [Brian Behlendorf]

  *) Fixed problem in set_[user|group] that prevented CGI execution
     for non-virtualhosts when suEXEC was enabled. [Randy Terbush]

  *) Added PORTING information file.  [Jim Jagielski]

  *) Added definitions for S_IWGRP and S_IWOTH to conf.h [Ben Laurie]

  *) Changed default group to "nogroup" instead of "nobody" [Randy Terbush]

  *) Fixed define typo of FCNTL_SERIALIZED_ACCEPT where
     USE_FCNTL_SERIALIZED_ACCEPT was intended.

  *) Fixed additional uses of 0xffffffff where INADDR_NONE was intended,
     which caused problems of systems where socket s_addr is >32bits.

  *) Added comment to explain (r->chunked = 1) side-effect in
     http_protocol.c [Roy Fielding]

  *) Replaced use of index() in mod_expires.c with more appropriate
     and portable isdigit() test.  [Ben Laurie]

  *) Updated Configure for ...
        OS/2          (DEF_WANTHSREGEX=yes, other code changes)
        *-dg-dgux*    (bad pattern match)
        QNX           (DEF_WANTHSREGEX=yes)
        *-sunos4*     (DEF_WANTHSREGEX=yes, -DUSEBCOPY)
        *-ultrix      (new)
        *-unixware211 (new)
     and added some user diagnostic info.  [Ben Laurie]

  *) In helpers/CutRule, replaced "cut" invocation with "awk" invocation
     for better portability. [Jim Jagielski]

  *) Updated helpers/GuessOS for ...
        SCO 5            (recognize minor releases)
        SCO UnixWare     (braindamaged uname, whatever-whatever-unixware2)
        SCO UnixWare 2.1.1      (requires a separate set of #defines in conf.h)
        IRIX64           (-sgi-irix64)
        ULTRIX           (-unknown-ultrix)
        SINIX            (-whatever-sysv4)
        NCR Unix         (-ncr-sysv4)
     and fixed something in helpers/PrintPath  [Ben Laurie]

Changes with Apache 1.2b1:

  *) Not listed. See <http://www.apache.org/docs/new_features_1_2.html>

Changes with Apache 1.1.1:

  *) Fixed bug where Cookie module would make two entries in the
     logfile for each access [Mark Cox]

  *) Fixed bug where Redirect in .htaccess files would cause memory
     leak. [Nathan Neulinger]

  *) MultiViews now works correctly with AddHandler [Alexei Kosut]

  *) Problems with mod_auth_msql fixed [Dirk vanGulik]

  *) Fix misspelling of "Anonymous_Authorative" directive in mod_auth_anon.

Changes with Apache 1.1.0:

  *) Bring NeXT support up to date. [Takaaki Matsumoto]

  *) Bring QNX support up to date. [Ben Laurie]

  *) Make virtual hosts default to main server keepalive parameters.
     [Alexei Kosut, Ben Laurie]

  *) Allow ScanHTMLTitles to work with lowercase <title> tags. [Alexei Kosut]

  *) Fix missing address family for connect, also remove unreachable statement
     in mod_proxy. [Ben Laurie]

  *) mod_env now turned on by default in Configuration.tmpl.

  *) Bugs which were fixed:
        a) yet more mod_proxy bugs [Ben Laurie]
        b) CGI works again with inetd [Alexei Kosut]
        c) Leading colons were stripped from passwords [osm@interguide.com]
        d) Another fix to multi-method Limit problem [jk@tools.de]

Changes with Apache 1.1b4:

  *) r->bytes_sent variable restored. [Robert Thau]

  *) Previously broken multi-method <Limit> parsing fixed. [Robert Thau]

  *) More possibly unsecure programs removed from the support directory.

  *) More mod_auth_msql authentication improvements.

  *) VirtualHosts based on Host: headers no longer conflict with the
     Listen directive.

  *) OS/2 compatibility enhancements. [Gary Smiley]

  *) POST now allowed to directory index CGI scripts.

  *) Actions now work with files of the default type.

  *) Bugs which were fixed:
        a) more mod_proxy bugs
        b) early termination of inetd requests
        c) compile warnings on several systems
        d) problems when scripts stop reading output early

Changes with Apache 1.1b3:

  *) Much of cgi-bin and all of cgi-src has been removed, due to
     various security holes found and that we could no longer support
     them.

  *) The "Set-Cookie" header is now special-cased to not merge multiple
     instances, since certain popular browsers can not handle multiple
     Set-Cookie instructions in a single header. [Paul Sutton]

  *) rprintf() added to buffer code, occurrences of sprintf removed.
     [Ben Laurie]

  *) CONNECT method for proxy module, which means tunneling SSL should work.
     (No crypto needed)  Also a NoCache config directive.

  *) Several API additions: pstrndup(), table_unset() and get_token()
     functions now available to modules.

  *) mod_imap fixups, in particular Location: headers are now complete
     URL's.

  *) New "info" module which reports on installed module set through a
     special URL, a la mod_status.

  *) "ServerPath" directive added - allows for graceful transition
     for Host:-header-based virtual hosts.

  *) Anonymous authentication module improvements.

  *) MSQL authentication module improvements.

  *) Status module design improved - output now table-based. [Ben Laurie]

  *) htdigest utility included for use with digest authentication
     module.

  *) mod_negotiation: Accept values with wildcards to be treated with
     less priority than those without wildcards at the same quality
     value. [Alexei Kosut]

  *) Bugs which were fixed:
        a) numerous mod_proxy bugs
        b) CGI early-termination bug [Ben Laurie]
        c) Keepalives not working with virtual hosts
        d) RefererIgnore problems
        e) closing fd's twice in mod_include (causing core dumps on
           Linux and elsewhere).

Changes with Apache 1.1b2:

  *) Bugfixes:
        a) core dumps in mod_digest
        b) truncated hostnames/ip address in the logs
        c) relative URL's in mod_imap map files

Changes with Apache 1.1b1:

  *) Not listed. See <http://www.apache.org/docs/new_features_1_1.html>

Changes with Apache 1.0.3:

  *) Internal redirects which occur in mod_dir.c now preserve the
     query portion of a request (the bit after the question mark).
     [Adam Sussman]

  *) Escape active characters '<', '>' and '&' in html output in
     directory listings, error messages and redirection links.
     [David Robinson]

  *) Apache will now work with LynxOS 2.3 and later [Steven Watt]

  *) Fix for POSIX compliance in waiting for processes in alloc.c.
     [Nick Williams]

  *) setsockopt no longer takes a const declared argument [Martijn Koster]

  *) Reset timeout timer after each successful fwrite() to the network.
     This patch adds a reset_timeout() procedure that is called by
     send_fd() to reset the timeout ever time data is written to the net.
     [Nathan Schrenk]

  *) timeout() signal handler now checks for SIGPIPE and reports
     lost connections in a more user friendly way. [Rob Hartill]

  *) Location of the "scoreboard" file which used to live in /tmp is
     now configurable (for OSes that can't use mmap) via ScoreBoardFile
     which works similar to PidFile (in httpd.conf) [Rob Hartill]

  *) Include sys/resource.h in the correct place for SunOS4 [Sameer Parekh]

  *) the pstrcat call in mod_cookies.c didn't have an ending NULL,
     which caused a SEGV with cookies enabled

  *) Output warning when MinSpareServers is set to <= 0 and change it to 1
     [Rob Hartill]

  *) Log the UNIX textual error returned by some system calls, in
     particular errors from accept() [David Robinson]

  *) Add strerror function to util.c for SunOS4 [Randy Terbush]

Changes with Apache 1.0.2

  *) patch to get Apache compiled on UnixWare 2.x, recommended as
     a temporary measure, pending rewrite of rfc931.c. [Chuck Murcko]

  *) Fix get_basic_auth_pw() to set the auth_type of the request.
     [David Robinson]

  *) past changes to http_config.c to only use the
     setrlimit function on systems defining RLIMIT_NOFILE
     broke the feature on SUNOS4. Now defines HAVE_RESOURCE
     for SUNOS and prototypes the needed functions.

  *) Remove uses of MAX_STRING_LEN/HUGE_STRING_LEN from several routines.
     [David Robinson]

  *) Fix use of pointer to scratch memory. [Cliff Skolnick]

  *) Merge multiple headers from CGI scripts instead of taking last
     one. [David Robinson]

  *) Add support for SCO 5. [Ben Laurie]

Changes with Apache 1.0.1

  *) Silence mod_log_referer and mod_log_agent if not configured
     [Randy Terbush]

  *) Recursive includes can occur if the client supplies PATH_INFO data
     and the server provider uses relative links; as file.html
     relative to /doc.shtml/pathinfo is /doc.shtml/file.html. [David Robinson]

  *) The replacement for initgroups() did not call {set,end}grent(). This
     had two implications: if anything else used getgrent(), then
     initgroups() would fail, and it was consuming a file descriptor.
     [Ben Laurie]

  *) On heavily loaded servers it was possible for the scoreboard to get
     out of sync with reality, as a result of a race condition.
     The observed symptoms are far more Apaches running than should
     be, and heavy system loads, generally followed by catastrophic
     system failure. [Ben Laurie]

  *) Fix typo in license. [David Robinson]

Changes with Apache 1.0.0

  *) Not listed. See <http://www.apache.org/docs/new_features_1_0.html>

Changes with Apache 0.8.16

  *) New man page for 'httpd' added to support directory [David Robinson]

  *) .htgroup files can have more than one line giving members for a
     given group (each must have the group name in front), for NCSA
     back-compatibility [Robert Thau]

  *) Mutual exclusion around accept() is on by default for SVR4 systems
     generally, since they generally can't handle multiple processes in
     accept() on the same socket.  This should cure flaky behavior on
     a lot of those systems.  [David Robinson]

  *) AddType, AddEncoding, and AddLanguage directives take multiple
     extensions on a single command line [David Robinson]

  *) UserDir can be disabled for a given virtual host by saying
     "UserDir disabled" in the <VirtualHost> section --- it was a bug
     that this didn't work.  [David Robinson]

  *) Compiles on QNX [Ben Laurie]

  *) Corrected parsing of ctime time format [David Robinson]

  *) httpd does a perror() before exiting if it can't log its pid
     to the PidFile, to make diagnosing the error a bit easier.
     [David Robinson]

  *) <!--#include file="..."--> can no longer include files in the
     parent directory, for NCSA back-compatibility.  [David Robinson]

  *) '~' is *not* escaped in URIs generated for directory listings
     [Roy Fielding]

  *) Eliminated compiler warning in the imagemap module [Randy Terbush]

  *) Fixed bug involving handling URIs with escaped %-characters
     in redirects [David Robinson]

Changes with Apache 0.8.15

  *) Switched to new, simpler license

  *) Eliminated core dumps with improperly formatted DBM group files [Mark Cox]

  *) Don't allow requests for ordinary files to have PATH_INFO [Ben Laurie]

  *) Reject paths containing %-escaped '%' or null characters [David Robinson]

  *) Correctly handles internal redirects to files with names containing '%'
     [David Robinson]

  *) Repunctuated some error messages [Aram Mirzadeh, Andrew Wilson]

  *) Use geteuid() rather than getuid() to see if we have root privilege,
     so that server correctly resets privilege if run setuid root.  [Andrew
     Wilson]

  *) Handle ftp: and telnet: URLs correctly in imagemaps (built-in module)
     [Randy Terbush]

  *) Fix relative URLs in imagemap files [Randy Terbush]

  *) Somewhat better fix for the old "Alias /foo/ /bar/" business
     [David Robinson]

  *) Don't repeatedly open the ErrorLog if a bunch of <VirtualHost>
     entries all name the same one. [David Robinson]

  *) Fix directory listings with filenames containing unusual characters
     [David Robinson]

  *) Better URI-escaping for generated URIs in directories with filenames
     containing unusual characters [Ben Laurie]

  *) Fixed potential FILE* leak in http_main.c [Ben Laurie]

  *) Unblock alarms on error return from spawn_child() [David Robinson]

  *) Sample Config files have extra note for SCO users [Ben Laurie]

  *) Configuration has note for HP-UX users [Rob Hartill]

  *) Eliminated some bogus Linux-only #defines in conf.h [Aram Mirzadeh]

  *) Nuked bogus #define in httpd.h [David Robinson]

  *) Better test for whether a system has setrlimit() [David Robinson]

  *) Calls update_child_status() after reopen_scoreboard() [David Robinson]

  *) Doesn't send itself SIGHUP on startup when run in the -X debug-only mode
     [Ben Laurie]

Changes with Apache 0.8.14

  *) Compiles on SCO ODT 3.0 [Ben Laurie]

  *) AddDescription works (better) [Ben Laurie]

  *) Leaves an intelligible error diagnostic when it can't set group
     privileges on standalone startup [Andrew Wilson]

  *) Compiles on NeXT again --- the 0.8.13 RLIMIT patch was failing on
     that machine, which claims to be BSD but does not support RLIMIT.
     [Randy Terbush]

  *) gcc -Wall no longer complains about an unused variable when util.c
     is compiled with -DMINIMAL_DNS [Andrew Wilson]

  *) Nuked another compiler warning for -Wall on Linux [Aram Mirzadeh]

Changes with Apache 0.8.13

  *) Make IndexIgnore *work* (ooops) [Jarkko Torppa]

  *) Have built-in imagemap code recognize & honor Point directive [James
     Cloos]

  *) Generate cleaner directory listings in directories with a mix of
     long and short filenames [Rob Hartill]

  *) Properly initialize dynamically loaded modules [Royston Shufflebotham]

  *) Properly default ServerName for virtual servers [Robert Thau]

  *) Rationalize handling of BSD in conf.h and elsewhere [Randy Terbush,
     Paul Richards and a cast of thousands...]

  *) On self-identified BSD systems (we don't try to guess any more),
     allocate a few extra file descriptors per virtual host with setrlimit,
     if we can, to avoid running out. [Randy Terbush]

  *) Write 22-character lock file name into buffer with enough space
     on startup [Konstantin Olchanski]

  *) Use archaic setpgrp() interface on NeXT, which requires it [Brian
     Pinkerton]

  *) Suppress -Wall warning by casting const away in util.c [Aram Mirzadeh]

  *) Suppress -Wall warning by initializing variable in negotiation code
     [Tobias Weingartner]

Changes with Apache 0.8.12

  *) Doesn't pause three seconds after including a CGI script which is
     too slow to die off (this is done by not even trying to kill off
     subprocesses, including the SIGTERM/pause/SIGKILL routine, until
     after the entire document has been processed).  [Robert Thau]

  *) Doesn't do SSI if Options Includes is off.  (Ooops).  [David Robinson]

  *) Options IncludesNoExec allows inclusion of at least text/* [Roy Fielding]

  *) Allows .htaccess files to override <Directory> sections naming the
     same directory [David Robinson]

  *) Removed an efficiency hack in sub_req_lookup_uri which was
     causing certain extremely marginal cases (e.g., ScriptAlias of a
     *particular* index.html file) to fail.  [David Robinson]

  *) Doesn't log an error when the requested URI requires
     authentication, but no auth header line was supplied by the
     client; this is a normal condition (the client doesn't no auth is
     needed here yet).  [Robert Thau]

  *) Behaves more sanely when the name server loses its mind [Sean Welch]

  *) RFC931 code compiles cleanly on old BSDI releases [Randy Terbush]

  *) RFC931 code no longer passes out name of prior clients on current
     requests if the current request came from a server that doesn't
     do RFC931.  [David Robinson]

  *) Configuration script accepts "Module" lines with trailing whitespace.
     [Robert Thau]

  *) Cleaned up compiler warning from mod_access.c [Robert Thau]

  *) Cleaned up comments in mod_cgi.c [Robert Thau]

Changes with Apache 0.8.11

  *) Wildcard <Directory> specifications work.  [Robert Thau]

  *) Doesn't loop for buggy CGI on Solaris [Cliff Skolnick]

  *) Symlink checks (FollowSymLinks off, or SymLinkIfOwnerMatch) always check
     the file being requested itself, in addition to the directories leading
     up to it. [Robert Thau]

  *) Logs access failures due to symlink checks or invalid client address
     in the error log [Roy Fielding, Robert Thau]

  *) Symlink checks deal correctly with systems where lstat of
     "/path/to/some/link/" follows the link.  [Thau, Fielding]

  *) Doesn't reset DirectoryIndex to 'index.html' when
     other directory options are set in a .htaccess file.  [Robert Thau]

  *) Clarified init code and nuked bogus warning in mod_access.c
     [Florent Guillaume]

  *) Corrected several directives in sample srm.conf
     --- includes corrections to directory indexing icon-related directives
     (using unknown.gif rather than unknown.xbm as the DefaultIcon, doing
     icons for encodings right, and turning on AddEncoding by default).
     [Roy Fielding]

  *) Corrected descriptions of args to AddIcon and AddAlt in command table
     [James Cloos]

  *) INSTALL & README mention "contributed modules" directory [Brian
     Behlendorf]

  *) Fixed English in the license language...  "for for" --> "for".
     [Roy Fielding]

  *) Fixed ScriptAlias/Alias interaction by moving ScriptAlias handling to
     mod_alias.c, merging it almost completely with handling of Alias, and
     adding a 'notes' field to the request_rec which allows the CGI module
     to discover whether the Alias module has put this request through
     ScriptAlias (which it needs to know for back-compatibility, as the old
     NCSA code did not check Options ExecCGI in ScriptAlias directories).
     [Robert Thau]


Changes with Apache 0.8.10

  *) AllowOverride applies to the named directory, and not just
     subdirectories.  [David Robinson]

  *) Do locking for accept() exclusion (on systems that need it)
     using a special file created for the purpose in /usr/tmp, and
     not the error log; using the error log causes real problems
     if it's NFS-mounted; this is known to be the cause of a whole
     lot of "server hang" problems with Solaris.  [David Robinson;
     thanks to Merten Schumann for help diagnosing the problem].

Changes with Apache 0.8.9

  *) Compiles with -DMAXIMUM_DNS ---- ooops! [Henrik Mortensen]

  *) Nested includes see environment variables of the including document,
     for NCSA bug-compatibility (some sites have standard footer includes
     which try to print out the last-modified date).  [Eric Hagberg/Robert
     Thau]

  *) <!--exec cgi="/some/uri/here"--> always treats the item named by the
     URI as a CGI script, even if it would have been treated as something
     else if requested directly, for NCSA back-compatibility.  (Note that
     this means that people who know the name of the script can see the
     code just by asking for it).  [Robert Thau]

  *) New version of dbmmanage script included in support directory as
     dbmmanage.new.

  *) Check if scoreboard file couldn't be opened, and say so, rather
     then going insane [David Robinson]

  *) POST to CGI works on A/UX [Jim Jagielski]

  *) AddIcon and AddAlt commands work properly [Rob Hartill]

  *) NCSA server push works properly --- the Arena bug compatibility
     workaround, which broke it, is gone (use -DARENA_BUG_WORKAROUND
     if you still want the workaround).  [Rob Hartill]

  *) If client didn't submit any Accept-encodings, ignore encodings in
     content negotiation.  (NB this will all have to be reworked anyway
     for the new HTTP draft).  [Florent Guillaume]

  *) Don't dump core when trying to log timed-out requests [Jim Jagielski]

  *) Really honor CacheNegotiatedDocs [Florent Guillaume]

  *) Give Redirect priority over Alias, for NCSA bug compatibility
     [David Robinson]

  *) Correctly set PATH_TRANSLATED in all cases from <!--#exec cmd=""-->,
     paralleling earlier bug fix for CGI [David Robinson]

  *) If DBM auth is improperly configured, report a server error and don't
     dump core.

  *) Deleted FCNTL_SERIALIZED_ACCEPTS from conf.h entry for A/UX;
     it seems to work well enough without it (even in a 10 hits/sec
     workout), and the overhead for the locking under A/UX is
     alarmingly high (though it is very low on other systems).
     [Eric Hagberg]

  *) Fixed portability problems with mod_cookies.c [Cliff Skolnick]

  *) Further de-Berklize mod_cookies.c; change the bogus #include.  [Brian
     Behlendorf/Eric Hagberg]

  *) More improvements to default Configuration for A/UX [Jim Jagielski]

  *) Compiles clean on NEXT [Rob Hartill]

  *) Compiles clean on SGI [Robert Thau]

Changes with Apache 0.8.8

  *) SunOS library prototypes now never included unless explicitly
     requested in the configuration (via -DSUNOS_LIB_PROTOTYPES);
     people using GNU libc on SunOS are screwed by prototypes for the
     standard library.

     (Those who wish to compile clean with gcc -Wall on a standard
     SunOS setup need the prototypes, and may obtain them using
     -DSUNOS_LIB_PROTOTYPES.  Those wishing to use -Wall on a system
     with nonstandard libraries are presumably competent to make their
     own arrangements).

  *) Strips trailing '/' characters off both args to the Alias command,
     to make 'Alias /foo/ /bar/' work.

Changes with Apache 0.8.7

  *) Don't hang when restarting with a child from 'TransferLog "|..."' running
     [reported by David Robinson]

  *) Compiles clean on OSF/1 [David Robinson]

  *) Added some of the more recent significant changes (AddLanguage stuff,
     experimental LogFormat support) to CHANGES file in distribution root
     directory

Changes with Apache 0.8.6

  *) Deleted Netscape reload workaround --- it's in violation of HTTP specs.
     (If you actually wanted a conditional GET which bypassed the cache, you
     couldn't get it). [Reported by Roy Fielding]

  *) Properly terminate headers on '304 Not Modified' replies to conditional
     GETs --- no browser we can find cares much, but the CERN proxy chokes.
     [Reported by Cliff Skolnick; fix discovered independently by Rob Hartill]

  *) httpd -v doesn't call itself "Shambhala".  [Reported by Chuck Murcko]

  *) SunOS lib-function prototypes in conf.h conditionalized on __GNUC__,
     not __SUNPRO_C (they're needed to quiet gcc -Wall, but acc chokes on 'em,
     and older versions don't set the __SUNPRO_C preprocessor variable).  On
     all other systems, these are never used anyway.  [Reported by Mark Cox].

  *) Scoreboard file (/tmp/htstatus.*) no longer publically writable.

Changes with Apache 0.8.5

  *) Added last-minute configurable log experiment, as optional module

  *) Correctly set r->bytes_sent for HTTP/0.9 requests, so they get logged
     properly.  (One-line fix to http_protocol.c).

  *) Work around bogus behavior when reloading from Netscape.
     It's Netscape's bug --- for some reason they expect a request with
     If-modified-since: to not function as a conditional GET if it also
     comes with Pragma: no-cache, which is way out of line with the HTTP
     spec (according to Roy Fielding, the redactor).

  *) Added parameter to set maximum number of server processes.

  *) Added patches to make it work on A/UX.  A/UX is *weird*.  [Eric Hagberg]

  *) IdentityCheck bugfix [Chuck Murcko].

  *) Corrected cgi-src/Makefile entry for new imagemap script.  [Alexei Kosut]

  *) More sample config file corrections; add extension to AddType for
     *.asis, move AddType generic description to its proper place, and
     fix miscellaneous typos. [ Alexei Kosut ]

  *) Deleted the *other* reference to the regents from the Berkeley
     legal disclaimer (everyplace).

  *) Nuked Shambhala name from src/README; had already cleaned it out
     of everywhere else.

Changes with Apache 0.8.4

  *) Changes to server-pool management parms --- renamed current
     StartServers to MinSpareServers, created separate StartServers
     parameter which means what it says, and renamed MaxServers to
     MaxSpareServers (though the old name still works, for NCSA 1.4
     back-compatibility).  The old names were generally regarded as
     too confusing.  Also altered "docs" in sample config files.

  *) More improvements to default config files ---
     sample directives (commented out) for XBitHack, BindAddress,
     CacheNegotiatedDocs, VirtualHost; decent set of AddLanguage
     defaults, AddTypes for send-as-is and imagemap magic types, and
     improvements to samples for DirectoryIndex [Alexei Kosut]

  *) Yet more improvements to default config files --- changes to
     Alexei's sample AddLanguage directives, and sample LanguagePriority
     [ Florent Guillaume ]

  *) Set config file locations properly if not set in httpd.conf
     [ David Robinson ]

  *) Don't escape URIs in internal redirects multiple times; don't
     do that when translating PATH_INFO to PATH_TRANSLATED either.
     [ David Robinson ]

  *) Corrected spelling of "Required" in 401 error reports [Andrew Wilson]

Changes with Apache 0.8.3

  *) Edited distribution README to *briefly* summarize installation
     procedures, and give a pointer to the INSTALL file in the src/
     directory.

  *) Upgraded imagemap script in cgi-bin to 1.8 version from more
     recent NCSA distributions.

  *) Bug fix to previous bug fix --- if .htaccess file and <Directory>
     exist for the same directory, use both and don't segfault.  [Reported
     by David Robinson]

  *) Proper makefile dependencies [David Robinson]

  *) Note (re)starts in error log --- reported by Rob Hartill.

  *) Only call no2slash() after get_path_info() has been done, to
     preserve multiple slashes in the PATH_INFO [NCSA compatibility,
     reported by Andrew Wilson, though this one is probably a real bug]

  *) Fixed mod_imap.c --- relative paths with base_uri referer don't
     dump core when Referer is not supplied. [Randy Terbush]

  *) Lightly edited sample config files to refer people to our documentation
     instead of NCSA's, and to list Rob McCool as *original* author (also
     deleted his old, and no doubt non-functional email address).  Would be
     nice to have examples of new features...

Changes with Apache 0.8.2

  *) Added AddLanuage code [Florent Guillaume]

  *) Don't say "access forbidden" when a CGI script is not found.  [Mark Cox]

  *) All sorts of problems when MultiViews finds a directory.  It would
     be nice if mod_dir.c was robust enough to handle that, but for now,
     just punt.  [reported by Brian Behlendorf]

  *) Wait for all children on restart, to make sure that the old socket
     is gone and we can reopen it.  [reported by Randy Terbush]

  *) Imagemap module is enabled in default Configuration

  *) RefererLog and UserAgentLog modules properly default the logfile
     [Randy Terbush]

  *) Mark Cox's mod_cookies added to the distribution as an optional
     module (commented out in the default Configuration, and noted as
     an experiment, along with mod_dld). [Mark Cox]

  *) Compiles on ULTRIX (a continuing battle...). [Robert Thau]

  *) Fixed nasty bug in SIGTERM handling [reported by Randy Terbush]

  *) Changed "Shambhala" to "Apache" in API docs. [Robert Thau]

  *) Added new, toothier legal disclaimer. [Robert Thau; copied from BSD
     license]

Changes with Apache 0.8.1

  *) New imagemap module [Randy Terbush]

  *) Replacement referer log module with NCSA-compatible RefererIgnore
     [Matthew Gray again]

  *) Don't mung directory listings with very long filenames.
     [Florent Guillaume]

Changes with Apache 0.8.0 (nee Shambhala 0.6.2):

  *) New config script.  See INSTALL for info.  [Robert Thau]

  *) Scoreboard mechanism for regulating the number of extant server
     processes.  MaxServers and StartServers defaults are the same as
     for NCSA, but the meanings are slightly different.  (Actually,
     I should probably lower the MaxServers default to 10).

     Before asking for a new connection, each server process checks
     the number of other servers which are also waiting for a
     connection.  If there are more than MaxServers, it quietly dies
     off.  Conversely, every second, the root, or caretaker, process
     looks to see how many servers are waiting for a new connection;
     if there are fewer than StartServers, it starts a new one.  This
     does not depend on the number of server processes already extant.
     The accounting is arranged through a "scoreboard" file, named
     /tmp/htstatus.*, on which each process has an independent file
     descriptor (they need to seek without interference).

     The end effect is that MaxServers is the maximum number of
     servers on an *inactive* server machine, but more will be forked
     off to handle unusually heavy loads (or unusually slow clients);
     these will die off when they are no longer needed --- without
     reverting to the overhead of full forking operation.  There is a
     hard maximum of 150 server processes compiled in, largely to
     avoid forking out of control and dragging the machine down.
     (This is arguably too high).

     In my server endurance tests, this mechanism did not appear to
     impose any significant overhead, even after I forced it to put the
     scoreboard file on a normal filesystem (which might have more
     overhead than tmpfs).  [Robert Thau]

  *) Set HTTP_FOO variables for SSI <!--#exec cmd-->s, not just CGI scripts.
     [Cliff Skolnick]

  *) Read .htaccess files even in directory with <Directory> section.
     (Former incompatibility noted on mailing list, now fixed). [Robert
     Thau]

  *) "HEAD /" gives the client a "Bad Request" error message, rather
     than trying to send no body *and* no headers.  [Cliff Skolnick].

  *) Don't produce double error reports for some very obscure cases
     mainly involving auth configuration (the "all modules decline to
     handle" case which is a sure sign of a server bug in most cases,
     but also happens when authentication is badly misconfigured).
     [Robert Thau]

  *) Moved FCNTL_SERIALIZED_ACCEPT defines into conf.h (that's what
     it's *for*, and this sort of thing really shouldn't be cluttering
     up the Makefile). [Robert Thau]

  *) Incidental code cleanups in http_main.c --- stop dragging
     sa_client around; just declare it where used.  [Robert Thau]

  *) Another acc-related fix.  (It doesn't like const char
     in some places...). [Mark Cox]

Changes with 0.6.1

  *) Fixed auth_name-related typos in http_core.c [Brian Behlendorf]
     Also, fixed auth typo in http_protocol.c unmasked by this fix.

  *) Compiles clean with acc on SunOS [Paul Sutton]

  *) Reordered modules in modules.c so that Redirect takes priority
     over ScriptAlias, for NCSA bug-compatibility [Rob Hartill] ---
     believe it or not, he has an actual site with a ScriptAlias and
     a Redirect declared for the *exact same directory*.  Even *my*
     compatibility fetish wouldn't motivate me to fix this if the fix
     required any effort, but it doesn't, so what the hey.

  *) Fixed to properly default several server_rec fields for virtual
     servers from the corresponding fields in the main server_rec.
     [Cliff Skolnick --- 'port' was a particular irritant].

  *) No longer kills off nph- child processes before they are
     finished sending output. [Matthew Gray]

Changes with 0.6.0

  *) Two styles of timeout --- hard and soft.  soft_timeout()s just put
     the connection to the client in an "aborted" state, but otherwise
     allow whatever handlers are running to clean up.  hard_timeout()s
     abort the request in progress completely; anything not tied to some
     resource pool cleanup will leak.  They're still around because I
     haven't yet come up with a more elegant way of handling
     timeouts when talking to something that isn't the client.  The
     default_handler and the dir_handler now use soft timeouts, largely
     so I can test the feature.  [Robert Thau]

  *) TransferLog "| my_postprocessor ..." seems to be there.  Note that
     the case of log handlers dying prematurely is probably handled VERY
     gracelessly at this point, and if the logger stops reading input,
     the server will hang.  (It is known to correctly restart the
     logging process on server restart; this is (should be!) going through
     the same SIGTERM/pause/SIGKILL routine used to ding an errant CGI
     script).  [Robert Thau]

  *) asis files supported (new module).  [Robert Thau]

  *) IdentityCheck code is compiled in, but has not been tested.  (I
     don't know anyone who runs identd). [Robert Thau]

  *) PATH_INFO and PATH_TRANSLATED are not set unless some real PATH_INFO
     came in with the request, for NCSA bug-compatibility. [Robert Thau]

  *) Don't leak the DIR * on HEAD request for a directory. [Robert Thau]

  *) Deleted the block_alarms() stuff from dbm_auth; no longer necessary,
     as timeouts are not in scope. [Robert Thau]

  *) quoted-string args in config files now handled correctly (doesn't drop
     the last character). [Robert Thau; reported by Randy Terbush]

  *) Fixed silly typo in http_main.c which was suddenly fatal in HP-UX.
     How the hell did it ever work? [Robert Thau; reported by Rob Hartill]

  *) mod_core.c --- default_type returns DEFAULT_TYPE (the compile-time
     default default type); the former default default behavior when all
     type-checkers defaulted had been a core dump.  [Paul Sutton]

  *) Copy filenames out of the struct dirent when indexing
     directories.  (On Linux, readdir() returns a pointer to the same
     memory area every time).  Fix is in mod_dir.c.  [Paul Sutton]

Changes with 0.5.3 [not released]

  *) Default response handler notes "file not found" in the error log,
     if the file was not found.  [Cliff Skolnick].

  *) Another Cliff bug --- "GET /~user" now properly redirects (the userdir
     code no longer sets up bogus PATH_INFO which fakes out the directory
     handler). [Cliff Skolnick]

Changes with 0.5.2

  *) Changes to http_main.c --- root server no longer plays silly
     games with SIGCHLD, and so now detects and replaces dying
     children.  Child processes just die on SIGTERM, without taking
     the whole process group with them.  Potential problem --- if any
     child process refuses to die, we hang in restart.
     MaxRequestsPerChild may still not work, but it certainly works
     better than it did before this!  [Robert Thau]

  *) mod_dir.c bug fixes: ReadmeName and HeaderName
     work (or work better, at least); over-long description lines
     properly terminated. [Mark Cox]

  *) http_request.c now calls unescape_url() more places where it
     should [Paul Sutton].

  *) More directory handling bugs (reported by Cox)
     Parent Directory link is now set correctly. [Robert Thau]

Changes with 0.5.1: [Hopefully complete]                  10 Apr 1995

  *) Generalized cleanup interface in alloc.c --- any function can be
     registered with alloc.c as a cleanup for a resource pool;
     tracking of files and file descriptors has been reimplemented in
     terms of this interface, so I can give it some sort of a test.
     [Robert Thau]

  *) More changes in alloc.c --- new cleanup_for_exec() function,
     which tracks down and closes all file descriptors which have been
     registered with the alloc.c machinery before the server exec()s a
     child process for CGI or <!--#exec-->.  CGI children now get
     started with exactly three file descriptors open.  Hopefully,
     this cures the problem Rob H. was having with overly persistent
     CGI connections. [Robert Thau]

  *) Mutual exclusion around the accept() in child_main() --- this is
     required on at least SGI, Solaris and Linux, and is #ifdef'ed in
     by default on those systems only (-DFCNTL_SERIALIZED_ACCEPT).
     This uses fcntl(F_SETLK,...) on the error log descriptor because
     flock() on that descriptor won't work on systems which have BSD
     flock() semantics, including (I think) Linux 1.3 and Solaris.

     This does work on SunOS (when the server is idle, only one
     process in the pool is waiting on accept()); it *ought* to work
     on the other systems. [Robert Thau]

  *) FreeBSD and BSDI portability tweaks [Chuck Murcko]

  *) sizeof(*sa_client) bugfix from [Rob Hartill]

  *) pstrdup(..., NULL) returns NULL, [Randy Terbush]

  *) block_alarms() to avoid leaking the DBM* in dbm auth (this should
     be unnecessary if I go to the revised timeout-handling scheme).
     [Robert Thau]

  *) For NCSA bug-compatibility, set QUERY_STRING env var (to a null
     string) even if none came in with the request.  [Robert Thau]

  *) CHANGES file added to distribution ;-).

Changes with 0.4                                          02 Apr 1995

  *) Patches by Brian Behlendorf, Andrew Wilson, Robert Thau,
     and Rob Hartill.

Changes with 0.3                                          24 Mar 1995

  *) Patches by Robert Thau, David Robinson, Rob Hartill, and
     Carlos Varela

Changes with 0.2                                          18 Mar 1995

  *) Based on NCSA httpd 1.3 by Rob McCool and patches by CERT,
     Roy Fielding, Robert Thau, Nicolas Pioch, David Robinson,
     Brian Behlendorf, Rob Hartill, and Cliff Skolnick