-Changes with Apache 2.0b1
+Changes with Apache 2.0.12-dev
+
+ *) Namespace protect IOBUFSIZ since it is exposed in the API.
+ [Jon Travis <jtravis@covalent.net>]
+
+ *) Use "Basic" authentication instead of "basic" in ab, as the spec
+ says we should. [Andre Breiler <andre.breiler@rd.bbc.co.uk>]
+
+ *) Fix a seg fault in mod_userdir.c. We used to use the pw structure
+ without ever filling it out. This fixes PR 7271.
+ [Taketo Kabe <kabe@sra-tohoku.co.jp> and
+ Cliff Woolley <cliffwoolley@yahoo.com>]
+
+ *) Add a couple of GCC attribute tags to printf style functions.
+ [Jon Travis <jtravis@covalent.net>]
+
+ *) Add the correct language tag for interoperation with the Taiwanese
+ versions of MSIE and Netscape. [Clive Lin <clive@CirX.ORG>] PR#7142
+
+ *) Migrate the perchild MPM to use the new apr signal child, and
+ APR thread functions. [Ryan Bloom]
+
+ *) Close one copy of the CGI's stdout before creating the new process.
+ The CGI will still have stdout, because we have already dup'ed it.
+ This keeps Apache from waiting forever to send the results of a CGI
+ process that has forked a long-lived child process.
+ [Taketo Kabe <kabe@sra-tohoku.co.jp>]
+
+ *) Remove the rest of the pthreads functions from the threaded MPM.
+ This requires the APR support for a signal thread that was just
+ added. [Ryan Bloom]
+
+ *) Make mod_dir use a fixup for sending a redirect to the browser.
+ Before this, we were using a handler, which doesn't make much
+ sense, because the handler wasn't generating any data, it would
+ either return a redirect error code, or DECLINED. This fits the
+ current hooks better. [Ryan Morgan <rmorgan@covalent.net>]
+
+ *) Make the threaded MPM use APR threads instead of pthreads.
+ [Ryan Bloom]
+
+ *) Get mod_tls to the point where it actually appears to work in all cases.
+ [Ben Laurie]
+
+ *) implement --enable-modules and --enable-mods-shared for "all" and
+ "most". [Greg Stein]
+
+ *) Move the threaded MPM to use APR locks instead of pthread locks.
+ [Ryan Bloom]
+
+ *) Rename mpmt_pthread to threaded. This is more in line with the
+ fact that mpmt_pthread shouldn't be using pthreads directly, and
+ it is a smaller name that doesn't tie into anything.
+ [Ryan Bloom]
+
+ *) Rename the module structures so that the exported symbol matches
+ the file name, and it is easier to automate the installation
+ process (generating LoadModule directives from the module filenames).
+ [Martin Kraemer]
+
+ *) Remove the coalesce filter. With the ap_f* functions, this filter
+ is no longer needed. [Ryan Bloom]
+
+Changes with Apache 2.0.11
+
+ *) Remove the dexter MPM. Perchild is the same basic idea, but it has the
+ added feature of allowing a uid/gid per child process. If no
+ uid/gid is specified, then Perchild behaves exactly like dexter.
+ [Ryan Bloom]
+
+ *) Get perchild building again. [Ryan Bloom]
+
+ *) Don't disable threads just because we are using the prefork MPM.
+ If somebody wants to compile without threads, they must now add
+ --disable-threads to the configure command line. [Ryan Bloom]
+
+ *) Begin to move the calls to update_child_status into common code, so
+ that each individual MPM does not need to update the scoreboard itself.
+ [Ryan Bloom]
+
+ *) Allow mod_tls to compile under Unix boxes where openssl has been
+ installed to the system include files.
+ [Gomez Henri <new-httpd@slib.fr>]
+
+ *) Cleanup the mod_tls configure process. This should remove any need
+ to hand-edit any files. We require OpenSSL 0.9.6 or later, but
+ configure doesn't check that yet. [Ryan Bloom]
+
+ *) Add a very early prototype of SSL support (in mod_tls.c). It is
+ vital that you read modules/tls/README before attempting to build
+ it. [Ben Laurie]
+
+ *) Fix a potential seg fault on all platforms. David Reid fixed this
+ on BEOS, but the problem could happen anywhere, so we don't want
+ to #ifdef it. [Cliff Woolley <cliffwoolley@yahoo.com>]
+
+ *) Add new LogFormat directive, %D, to log time it takes to serve a
+ request in microseconds. [Bill Stoddard]
+
+ *) Change AddInputFilter and AddOutputFilter to SetInputFilter and
+ SetOutputFilter. This corresponds nicely with the other Set
+ directives, which operate on containers while the Add* directives
+ tend to work directly on extensions. [Ryan Bloom]
+
+ *) Cleanup the header handling a bit. This uses the apr_brigade_*
+ functions for the buffering so that we don't need to compute
+ the length of the headers before we actually create the header
+ buffer. [Ryan Bloom]
+
+ *) Allow filters to buffer data using the ap_f* functions. These have
+ become macros that resolve directly to apr_brigade_*.
+ [Ryan Bloom]
+
+ *) Get the Unix MPM's to do a graceful restart again. If we are going
+ to register a cleanup with ap_cleanup_scoreboard, then we have to
+ kill the cleanup with the same function, and that function can't be
+ static. [Ryan Bloom]
+
+ *) Install all required header files. Without these, it was not
+ possible to compile some modules outside of the server.
+ [Ryan Bloom]
+
+ *) Fix the AliasMatch directive in Apache 2.0. When we brought a patch
+ forward from 1.3 to 2.0, we missed a single line, which broke regex
+ aliases. [Ryan Bloom]
+
+ *) We have a poor abstraction in the protocol. This is a temporary
+ hack to fix the bug, but it will need to be fixed for real. If
+ we find an error while sending out a custom error response, we back
+ up to the first non-OK request and send the data. Then, when we send
+ the EOS from finalize_request_protocol, we go to the last request,
+ to ensure that we aren't sending an EOS to a request that has already
+ received one. Because the data is sent on a different request than
+ the EOS, the error text never gets sent down the filter stack. This
+ fixes the problem by finding the last request, and sending the data
+ with that request. [Ryan Bloom]
+
+ *) Make the server status page show the correct restart time, and
+ thus the proper uptime. [Ryan Bloom]
+
+ *) Move the CGI creation logic from mod_include to mod_cgi(d). This
+ should reduce the amount of duplicate code that is required to
+ create CGI processes.
+ [Paul J. Reder <rederpj@raleigh.ibm.com>]
+
+ *) ap_new_connection() closes the socket and returns NULL if a socket
+ call fails. Usually this is due to a connection which has been
+ reset. [Jeff Trawick]
+
+ *) Move the Apache version information out of httpd.h and into release.h.
+ This is in preparation for the first tag with the new tag and release
+ system. [Ryan Bloom]
+
+ *) Begin restructuring scoreboard code to enable adding back in
+ the ability to use IPC other than shared memory.
+ Get mod_status working on Windows again. [Bill Stoddard]
+
+ *) Make mod_status work with 2.0. This will work for prefork,
+ mpmt_pthread, and dexter. [Ryan Bloom]
+
+ *) Correct a typo in httpd.conf.
+ [Kunihiro Tanaka <tanaka@apache.or.jp>] PR#7154
+
+ *) Really fix mod_rewrite map lookups this time. [Tony Finch]
+
+ *) Get the correct IP address if ServerName isn't set and we can't
+ find a fully-qualified domain name at startup.
+ PR#7170 [Danek Duvall <dduvall@eng.sun.com>]
+
+ *) Make mod_cgid work with SuExec. [Ryan Bloom]
+
+ *) Adopt apr user/group name features for mod_rewrite. Eliminates some
+ 'extra' stat's for user/group since they should never occur, and now
+ resolves the SCRIPT_USER and SCRIPT_GROUP, including on WinNT NTFS
+ volumes. [William Rowe]
+
+ *) Adopt apr features to simplify mod_includes. This changes the
+ behavior of the USER_NAME variable, unknown uid's are now reported
+ as USER_NAME="<unknown>" rather than the old user#000 result.
+ WinNT now resolves USER_NAME on NTFS volumes. [William Rowe]
+
+ *) Adopt apr features for simplifing mod_userdir, and accept the new
+ Win32/OS2 exceptions without hiccuping. [William Rowe]
+
+ *) Replace configure --with-optim option by using and saving the
+ environment variable OPTIM instead. This is needed because configure
+ options do not support multiple flags separated by spaces.
+ [Roy Fielding]
+
+ *) Fix some byterange handling. If we get a byte range that looks like
+ "-999999" where that is past the end of the file, we should return
+ a PARTIAL CONTENT status code, and return the whole file as one big
+ byterange. This matches the 1.3 handling now. [Ryan Bloom]
+
+ *) Make the error bucket a real meta-data bucket. This means that the
+ bucket length is 0, and a read returns NULL data. If one of these
+ buckets is passed down after the headers are sent, this data will
+ just be ignored. [Greg Stein]
+
+ *) The prefork MPM wasn't killing child processes correctly if a restart
+ signal was received while the process was serving a request. The child
+ process would become the equivalent of a second parent process. If
+ we break out of the accept loop, then we need to do die after cleaning
+ up after ourselves. [Ryan Bloom]
+
+ *) Change the Prefork MPM to use SIGWINCH instead of SIGUSR1 for graceful
+ restarts. [Ryan Bloom]
+
+ *) Modify the apr_stat/lstat/getfileinfo calls within apache to use
+ the most optimal APR_FINFO_wanted bits. This spares Win32 from
+ performing very expensive owner, group and permission lookups
+ and allows the server to function until these apr_finfo_t fields
+ are implemented under Win32. [William Rowe]
+
+ *) Support for typedsafe optional functions - that is functions exported by
+ optional modules, which, therefore, may or may not be present, depending
+ on configuration. See the experimental modules mod_optional_fn_{ex,im}port
+ for sample code. [Ben Laurie]
+
+ *) filters can now report an HTTP error to the server. This is done
+ by sending a brigade where the first bucket is an error_bucket.
+ This bucket is a simple bucket that stores an HTTP error and
+ a string. Currently the string is not used, but it may be needed
+ to output an error log. The http_header_filter will find this
+ bucket, and output the error text, and then return
+ AP_FILTER_ERROR, which informs the server that the error web page
+ has already been sent. [Ryan Bloom]
+
+ *) If we get an error, then we should remove all filters except for
+ those critical to serving a web page. This fixes a bug, where
+ error pages were going through the byterange filter, even though
+ that made no sense. [Ryan Bloom]
+
+ *) Relax the syntax checking of Host: headers in order to support
+ iDNS. PR#6635 [Tony Finch]
+
+ *) Cleanup the byterange filter to use the apr_brigade_partition
+ and apr_bucket_copy functions. This removes a lot of very messy
+ code, and hopefully makes this filter more stable.
+ [Ryan Bloom]
+
+ *) Remove AddModule and ClearModuleList directives. Both of these
+ directives were used to ensure that modules could be enabled
+ in the correct order. That requirement is now gone, because
+ we use hooks to ensure that modules are in the correct order.
+ [Ryan Bloom]
+
+ *) When SuExec is specified, we need to add it to the list of
+ targets to be built. If we don't, then any changes to the
+ configuration won't affect SuExec, unless 'make suexec' is
+ specifically run. [Ryan Bloom]
+
+ *) Cleaned out open_file from mod_file_cache, as apr now accepts
+ the APR_XTHREAD argument to open a file for consumption by
+ parallel threads on win32. [William Rowe]
+
+ *) Correct a bug in determining when we follow symlinks. The code
+ expected a stat -1 result, not an apr_status_t positive error.
+ Also check if the APR_FINFO_USER fields are valid before we
+ follow the link. [William Rowe]
+
+ *) Move initgroupgs, ap_uname2id and ap_gname2id from util.c to
+ mpm_common.c. These functions are only valid on some platforms,
+ so they should not be in the main-line code. [Ryan Bloom]
+
+ *) Remove ap_chdir_file(). This function is not thread-safe,
+ and nobody is currently using it. [Ryan Bloom]
+
+ *) Do not try to run make depend if there are no .c files in the
+ current directory, doing so makes `make depend` fail.
+ [Ryan Bloom]
+
+ *) Update highperformance.conf to work with either prefork or
+ pthreads mpms. [Greg Ames]
+
+ *) Stop checking to see if this is a pipelined request if we know
+ for a fact that it isn't. Basically, if r->connection->keepalive == 0.
+ This keeps us from making an extra read call when serving a 1.0
+ request. [Ryan Bloom and Greg Stein]
+
+ *) Fix the handling of variable expansion look-ahead in mod_rewrite,
+ i.e. syntax like %{LA-U:REMOTE_USER}, and also fix the parsing of
+ more complicated nested RewriteMap lookups. PR#7087 [Tony Finch]
+
+ *) Fix the RFC number mentioned when complaining about a missing
+ Host: header. PR#7079 [Alexey Toptygin <alexeyt@wam.umd.edu>]
+
+ *) Fix an endless loop in ab which occurred when ab was posting
+ and the server dropped the connection unexpectedly.
+ [Jeff Trawick]
+
+ *) Fix a segfault while handling request bodies in ap_http_filter().
+ This problem has been seen with mod_dav usage as well as with
+ requests where the body was just being discarded. [Jeff Trawick]
+
+ *) Some adjustment on the handling and automatic setting (via
+ hints.m4) of various compilation flags (eg: CFLAGS). Also,
+ add the capability to specify flags (NOTEST_CFLAGS and
+ NOTEST_LDFLAGS) which are used to compile Apache, but
+ not used during the configuration process. Useful for
+ flags like "-Werror". [Jim Jagielski]
+
+ *) Stop using environment variables to force debug mode or
+ no detach. We now use the -D command line argument to
+ specify the correct mode. -DONE_PROCESS and -DNO_DETACH.
+ [Greg Stein, Ryan Bloom]
+
+ *) Change handlers to use hooks. [Ben Laurie]
+
+ *) Stop returning copies of filenames from both apr_file_t and
+ apr_dir_t. We pstrdup the filenames that we store in the
+ actual structures, so we don't need to pstrdup the strings again.
+ [Ryan Bloom]
+
+ *) mod_cgi: Fix some problems where the wrong error value was being
+ traced. [Jeff Trawick]
+
+ *) EBCDIC: Fix some missing ASCII conversion on some protocol data.
+ [Jeff Trawick]
+
+ *) Add generic hooks. [Ben Laurie]
+
+ *) Use a real pool to dup the error log descriptor. [Ryan Bloom]
+
+ *) Fix a segfault caused by mod_ext_filter when the external filter
+ program does not exist. [Jeff Trawick]
+
+ *) Fix an output truncation error when on an HTTP >= 1.0 request an
+ object of size between DEFAULT_BUCKET_SIZE and AP_MIN_BYTES_TO_WRITE
+ was served through mod_charset_lite (or anything else that would
+ create a transient bucket in this size range). ap_bucket_make_heap()
+ silently failed (fixed), transient_setaside() discovered it, but
+ ap_save_brigade() ignored it (fixed). [Jeff Trawick]
+
+ *) Ignore \r\n or \n when using PEEK mode for input filters. The problem
+ is that some browsers send extra lines at the end of POST requests, and
+ we don't want to delay sending data back to the user just because the
+ browser isn't well behaved. [Ryan Bloom]
+
+ *) Get SuEXEC working again. We can't send absolute paths to suExec
+ because it refuses to execute those programs. SuEXEC also wasn't
+ always recognizing configuration changes made using the autoconf
+ setup. [Ryan Bloom]
+
+ *) Allow the buildconf process to find the config.m4 files in the correct
+ order. Basically, we can now name config.m4 files as config\d\d.m4,
+ and we will sort them correctly when inserting them into the build
+ process. [Ryan Bloom]
+
+ *) Get mod_cgid to use apr calls for creating the actual CGI process.
+ This also allows mod_cgid to use ap_os_create_priviledged_process,
+ thus allowing for SuExec execution from mod_cgid. Currently, we do
+ not support everything that standard SuExec supports, but at least
+ it works minimally now. [Ryan Bloom]
+
+ *) Allow SuExec to be configured from the ./configure command line.
+ [Ryan Bloom]
+
+ *) Update some of the docs in README and INSTALL to reflect some of
+ the changes in Apache 2.0 [Cliff Woolley <cliffwoolley@yahoo.com>]
+
+ *) If we get EAGAIN returned from the call to apr_sendfile, then we
+ need to call sendfile again. This gets us serving large files
+ such as apache_2.0a9.tar.gz on FreeBSD again. [Ryan Bloom]
+
+ *) Get the support programs building cleanly again.
+ [Cliff Woolley <cliffwoolley@yahoo.com>]
+
+ *) The Apache/Win32 Apache.exe and dll's now live in bin. The
+ current directory logic now backs up over bin/ to determine the
+ server root from the Apache.exe path.
+
+ *) Apache/Win32 now follows the standard conventions of mod_foo.so
+ loadable modules, dynamic libs are all named libfoo.dll, and the
+ makefile.win populates the include, lib and libexec directories.
*) Apache is now IPv6-capable. On systems where APR supports IPv6,
Apache gets IPv6 listening sockets by default. Additionally, the