By my count, we now have 6 +1s for a 2.0.32 beta in STATUS. Some variant of this release has been on daedalus for over a week now. I'm fairly confident we have something that is better than 2.0.28. Therefore, I would like to unleash this on the world as a beta. If you have any formal objections, please state them now.
However, I am going to hold off on formally announcing any 2.0.32 until we have .zip files to allow our Win32 users source and binary access. OtherBill has volunteered and hopes to have them in /dist/httpd by tomorrow morning. At that time, I will rename httpd-2.0.32-alpha.tar.gz to httpd-2.0.32-beta.tar.gz. I will also post this message to [EMAIL PROTECTED] and the other usual places at the same time. Does anyone have any comments or concerns? -- justin P.S. Should we include a link to www.apache.org/dist/httpd in this announcement? Apache 2.0.32 Released as Beta ------------------------------ The Apache HTTP Server Project is proud to announce the thirty-second release of Apache 2.0. This is the third public beta of Apache 2.0. This release has been tested thoroughly and has been running the apache.org web site since Feb. 7, 2002. Design and implementation of Apache 2.0 is now nearing completion. If you are a module author with specific issues in the API, this is your best opportunity to raise them so that your concerns are addressed prior to a General Availability release of Apache 2.0. While Apache continously undergoes improvement, major new features are now being deferred into the 2.1 version in order to expedite a General Availability release. If you have postponed testing Apache 2.0 due to its experimental nature, please download and test this Apache 2.0.32 release to help ensure that this forthcoming 2.0 release is the best version available. Apache 2.0 offers numerous enhancements, improvements and performance boosts over the 1.3 codebase. The most visible and noteworthy addition is the ability to run Apache in a hybrid thread/process mode on any platform that supports both threads and processes. This has been shown to improve the scalability of the Apache HTTPD server significantly on some versions of Unix in our testing. Apache 2.0 also includes support for filtered I/O. This allows modules to modify the output of other modules before it is sent to the client. Finally, we have included support for IPv6 on any platform that supports IPv6. This version of Apache is known to work on many versions of Unix, BeOS, OS/2, and Windows. Because of many of the advancements in Apache 2.0, this release of Apache is expected to perform equally well on all supported platforms. There are new snapshots of the Apache httpd source available every six hours from http://cvs.apache.org/snapshots/httpd-2.0/ - please download and test if you feel brave. We don't guarantee anything except that it will take up disk space, but if you have the time and skills, please give it a spin on your platforms. Apache has been the most popular web server on the Internet since April of 1996. The January 2002 WWW server site survey by Netcraft (http://www.netcraft.com/survey/) found that more web servers were using Apache than any other software running on more than 56% of the Internet web servers. For more information, please check out http://httpd.apache.org/. Known issues with this release ------------------------------ *) When using LogLevel debug, you may see spurious log entries reporting failures in read_request_line() or get_mime_headers(). This is usually a harmless error. You may ignore this message or increase your LogLevel setting. A proper patch for this problem has already been committed to CVS and will be included in the next release. The patch is available at: http://cvs.apache.org/viewcvs.cgi/httpd-2.0/server/protocol.c.diff?r1=1.83&r2=1.84 These issues will be addressed in a future release. Please refer to the Apache bug database at http://bugs.apache.org/ for information about problems not addressed in this document. Changes since the last public release ------------------------------------- Changes with Apache 2.0.32 *) mod_negotiation: ForceLanguagePriority now uses 'Prefer' as the default if the directive is not specified. This mirrors older behavior without changes to the httpd.conf. [William Rowe] *) Win32: solve the win32 service problems in 2.0.31-alpha, by fixing the service, mpm and logging code, and bugs in apr_file_open_stderr and apr_file_dup2 functions. Win2K/XP services have no handles associated for stdin/out/err, which caused unpredictable behavior in the prior release. [William Rowe, Bill Stoddard] *) Win32: simplify the Application Event Log messages, since there isn't likely to be 'more information in the error log' before an error log has been opened. [William Rowe] *) Win32: substantial cleanup to the mpm_winnt code for legibility and to follow the program flow of other MPMs. [Ryan Bloom, William Rowe] *) Win32: apache -k shutdown now behaves like apache -k stop. [Bill Stoddard] *) Fix prefork to not kill the parent if a child hits a resource shortage on accept(). [Greg Ames] *) Fix seg faults that occur when what should be the httpd request line starts with \r\n followed by garbage. [Greg Ames] *) Allow statically linked support binaries with the new --enable-static-support flag, and enable this behavior in the binbuild script. Also add a new --enable-static-htdbm flag. [Aaron Bannert] *) Allow mod_autoindex to serve symlinks if permitted and attempt to do only one stat() call when generating the directory listings. [Justin Erenkrantz] *) Fix resolve_symlink to save the original symlink name if known. [Justin Erenkrantz] *) Be a bit more sane with regard to CanonicalNames. If the user has specified they want to use the CanonicalName, but they have not configured a port with the ServerName, then use the same port that the original request used. [Ryan Bloom and Ken Coar] *) In core_input_filter, check for an empty brigade after APR_BRIGADE_NORMALIZE(). Otherwise, we can get segfaults if a client says it will post some data but we get FIN before any data arrives. [Jeff Trawick] *) Not being able to bind to the socket is a fatal error. We should print an error to the console, and return a non-zero status code. With these changes, all of the Unix MPMs do that correctly. [Ryan Bloom] *) suexec: Allow HTTPS and SSL_* environment variables to be passed through to CGI scripts. PR 9163 [Brian Reid <[EMAIL PROTECTED]>, Zvi Har'El <[EMAIL PROTECTED]>] *) binbuild.sh: Make sure that we use the expat from our source tree so that there aren't any surprises on the target machine. [Jeff Trawick] *) mod_cgid: Add retry logic for when the daemon can't fork fast enough to keep up with new requests. Start using HTTP_SERVER_UNAVAILABLE instead of HTTP_INTERNAL_SERVER_ERROR when we can't talk to the daemon. [Jeff Trawick] *) apxs: LTFLAGS envvar can override default libtool options. Try "LTFLAGS=' ' apxs -c mod_foo.c" to see what libtool does under the covers. [Jeff Trawick] *) The Location: response header field, used for external redirect, *must* be an absoluteURI. The Redirect directive tested for that, but RedirectMatch didn't -- it would allow almost anything through. Now it will try to turn an abs_path into an absoluteURI, but it will correctly varf like Redirect if the final redirection target isn't an absoluteURI. [Ken Coar] Changes with Apache 2.0.31 *) Create the scoreboard (in the parent) in a global pool context, so it survives graceful restarts. This fixes a SEGV during graceful restarts. [Aaron Bannert] *) Add a timeout option to the proxy code 'ProxyTimeout' [Ian Holsman] *) FTP directory listings are now always retrieved in ASCII mode. The FTP proxy properly escapes URI's and HTML in the generated listing, and escapes the path components when talking to the FTP server. It is now possible to browse the root directory by using a url like: ftp://user@host/%2f/ (ported from apache_1.3.24) Also, the last path component may contain wildcard characters '*' and '?', and if they do, a directory listing is created instead of a file retrieval. Example: ftp://user@host/httpd/server/*.c [Martin Kraemer] *) Added single-listener unserialized accept support to the worker MPM [Brian Pane] *) New Directive for mod_proxy: 'ProxyPreserveHost'. This passes the incoming host header through to the proxied server [Geoff <[EMAIL PROTECTED]>] *) New Directive Option for ProxyPass. It now can block a location from being proxied [Jukka Pihl <[EMAIL PROTECTED]>] *) Don't let the default handler try to serve a raw directory. At best you get gibberish. Much worse things can happen depending on the OS. [Jeff Trawick] *) Change the pre_config hook to return a value. Modules can now emit an error message and then cause the server to quit gracefully during startup. This required a bump to the MMN. [Aaron Bannert] *) Fix some unix socket descriptor leaks in the handler side of mod_cgid (the part that runs in the server process). Whack a silly "close(-1)" in the handler too. [Jeff Trawick] *) Change the pre_mpm hook to return a value, so that scoreboard init errors percolate up to code that knows how to exit cleanly. This required a bump to the MMN. [Jeff Trawick] *) Add the socket back to the conn_rec and remove the create_connection hook. The create_connection hook had a design flaw that did not allow creating connections based on vhost info. [Bill Stoddard] *) Fixed PATH_INFO and QUERY_STRING from mod_negotiation results. Resolves the common case of using negotation to resolve the request /script/foo for /script.cgi/foo. [William Rowe] *) Added new functions ap_add_(input|output)_filter_handle to allow modules to bypass the usual filter name lookup when adding hard-coded filters to a request [Brian Pane] *) caching should now work on subrequests (still very experimental) [Ian Holsman] *) The Win32 mpm_winnt now has a shared scoreboard. [William Rowe] *) Change ap_get_brigade prototype to use apr_off_t instead of apr_off_t*. [Justin Erenkrantz] *) Refactor ap_rgetline so that it does not use an internal brigade. Change ap_rgetline's prototype to return errors. [Justin Erenkrantz] *) Remove mod_auth_db. [Justin Erenkrantz] *) Do not install unnecessary pcre headers like config.h and internal.h. [Joe Orton <[EMAIL PROTECTED]>] *) Change in quick_hanlder behavior for subrequests. it now passes DONE (as it does for a normal request). quick_handled sub-requests now work in mod-include [Ian Holsman] *) Change SUBREQ_CORE so that it is a 'HTTP_HEADER' filter instead of 'CONTENT' one, as it needs to run AFTER all content headers *) Rename BeOS MPM directive RequestsPerThread to MaxRequestsPerThread. [Lars Eilebrecht] *) Split out blocking from the mode in the input filters. [Justin Erenkrantz] *) Fix a segfault in mod_include. [Justin Erenkrantz, Jeff Trawick] *) Cause Win32 to capture all child-worker process errors in Apache to the main server error log, until the child can open its own error logs. [William Rowe] *) HPUX 11.*: Do not kill the child process when accept() returns ENOBUFS on HPUX 11.*. (ported from a 1.3 patch by [[EMAIL PROTECTED]]) [Bill Stoddard] *) Fix a problem in the parsing of the <Proxy foo> directive. [Jeff Trawick] *) rewrite of mod_ssl input filter for better performance and less memory usage [Doug MacEachern] *) allow quick_handler to be run on subrequests. [Ian Holsman] *) mod_dav now asks its provider to place content directly into the filter stack when handling a GET request. The mod_dav/provider API has changed, so providers need to be updated. [Greg Stein] *) Clear the output socket descriptor in unixd_accept() to make sure we don't supply a bogus socket to the caller if the accept fails. This caused problems with the worker MPM, which tried to process the returned socket if it was non-NULL. [Brian Pane] *) Move a check for an empty brigade to the start of core input filter to avoid segfaults. [Justin Erenkrantz, Jeff Trawick] *) Add FileETag directive to allow configurable control of what data are used to form ETag values for file-based URIs. MMN bumped to 20020111 because of fields added to the end of the core_dir_config structure. [Ken Coar] *) Fix a segfault in mod_rewrite's logging code caused by passing the wrong config to ap_get_remote_host(). [Jeff Trawick] *) Allow mod_cgid to work from a binary distribution install by using 755 for the permissions on the log directory instead of 750. [Jeff Trawick] *) Fixed a segfault that happened during graceful shutdown (or when the httpd ran out of file descriptors) with the worker MPM [Brian Pane] *) Split all Win32 modules [excluding the core components mod_core, mod_so, mod_win32 and the winnt mpm] into individual loadable modules, so the administrator may individually disable the former compiled-in modules by simply commenting out their LoadModule directives. [William Rowe] *) Saved Win32 module authors and porters many future headaches, by duplicating the appropriate .h files such as os.h into the include directory, including in the build tree. [William Rowe] *) mod_ssl adjustments to help with using toolkits other than OpenSSL: Use SSL functions/macros instead of directly dereferencing SSL structures wherever possible. Add type-casts for the cases where functions return a generic pointer. Add $SSL/include to configure search path. [Madhusudan Mathihalli <[EMAIL PROTECTED]>] *) Moved several pointers out of the shared Scoreboard so it is more portable, and will present the vhost name across server generation restarts. [William Rowe] *) Fix SSLPassPhraseDialog exec: and SSLRandomSeed exec: [Doug MacEachern] Changes with Apache 2.0.30 *) Fix the main bug for FreeBSD and threaded MPM's. There are still issues (see STATUS) but at least the server will now run without crashing the machine. [David Reid, Aaron Bannert, Justin Erenkrantz] *) Fix a typo in mod_deflate's m4 config section. [albert chin ([EMAIL PROTECTED])] *) Fix a couple of mod_proxy problems forwarding HTTP connections and handling CONNECT: (1) PR #9190 Proxy failed to connect to IPv6 hosts. (2) Proxy failed to connect when the first IP address returned by the resolver was unreachable but a secondary IP address was. [Jeff Trawick] *) Fix the module identifer as shown in the docs for various core modules (e.g., the identifer for mod_log_config was previously listed as config_log_module). PR #9338 [James Watson <[EMAIL PROTECTED]>] *) Fix LimitRequestBody directive by placing it in the HTTP filter. [Justin Erenkrantz] *) Fix mod_proxy seg fault when the proxied server returns an HTTP/0.9 response or a bogus status line. [Adam Sussman] *) Prevent mod_proxy from truncating one character off the end of the status line returned from the proxied server. [Adam Sussman, Bill Stoddard] *) Eliminate loop in ap_proxy_string_read(). [Adam Sussman, Bill Stoddard] *) Provide $0..$9 results from mod_include regex parsing. [William Rowe] *) Allow mod-include to look for alternate start & end tags [Ian Holsman] *) Introduced the ForceLanguagePriority directive, to prevent returning MULTIPLE_CHOICES or NONE_ACCEPTABLE in some cases, when using Multiviews. [William Rowe] *) Fix a problem which prevented mod_cgid and suexec from working together reliably [Greg Ames] *) Remove the call to exit() from within mod_auth_digest's post_config phase. [Aaron Bannert] *) Fix a problem in mod_auth_digest that could potentially cause problems with initialized static data on a system that uses DSOs. [Aaron Bannert] *) Fix a segfault in the worker MPM that could happen during child process exits. [Brian Pane, Aaron Bannert] *) Allow mod_auth_dbm to handle multiple DBM types [Ian Holsman] *) Fix matching of vhosts by ip address so we find IPv4 vhost address when target address is v4-mapped form of that address. [Jeff Trawick] *) More performance tweaks to the BNDM string-search algorithm used to find "<!--#" tokens in mod_include [Brian Pane] *) Miscellaneous small performance fixes: optimized away various string copy operations and removed large temp buffers from the stack [Brian Pane] *) Fixed startup segfault that occurred when a VirtualHost directive had a port but no address [Brian Pane] *) Allow htdbm to work with multiple DBM types [Ian Holsman] *) Win32: Made change to apr_sendfile() to return APR_ENOTIMPL if oslevel < WINNT. This should fix several problems reported Against 2.0.28 on Windows 98 [Bill Stoddard] *) Win32: Fix bug that could cause CGI scripts with QUERY_STRINGS to fail. [Bill Stoddard] *) Change core code to allow an MPM to set hard thread/server limits at startup. prefork, worker, and perchild MPMs now have directives to set these limits. [Jeff Trawick] *) Win32: The async AcceptEx() event should be autoreset upon successful completion of a wait (WaitForSingleObject). This eliminates a number of spurious setsockopt(SO_UPDATE_ACCEPT_CONTEXT) failed." messages. [Bill Stoddard] *) Move any load library path environment variables out of apachectl and into a separate environment variable file which can be more easily tailored by the admin. The environment variable file as built by Apache may have additional system- specific settings. For example, on OS/390 we tailor the heap settings to allow lots of threads. [Jeff Trawick] *) Use the new APR pool code to reduce pool-related lock contention in the worker MPM. [Sander Striker] *) The POD no longer assumes the child is listening on 127.0.0.1 and now pulls the first hostname in the list of listeners to perform the dummy connect on. This fixes a bug when the user had configured the Listen directive for an IP other than 127.0.0.1. This would result in undead children and error messages such as "Connection refused: connect to listener". [Aaron Bannert] *) The worker MPM now respects the LockFile setting, needed to avoid locking problems with NFS. [Jeff Trawick] *) Fix segfault when worker MPM receives SIGHUP. [Ian Holsman, Aaron Bannert, Justin Erenkrantz] *) Fix bug that could potentially prevent the perchild MPM from working with more than one vhost/uid. [Aaron Bannert] *) Change make install and apxs -i processing of DSO modules to perform special handling on platforms where libtool doesn't install mod_foo.so. This fixes some wonkiness on HP-UX, Tru64, and AIX which prevented standard LoadModule statements from working. [Jeff Trawick] *) Whenever mod_so is enabled (not just when there are DSOs for our modules), do whatever special magic is required for compiling/ loading third-party modules. This allows third-party DSOs to be used on an AIX build when there were no built-in modules built as DSOs. (This should help on OS/390 and BeOS as well.) [Jeff Trawick] *) Allow apxs to be used to build DSOs on AIX without requiring the user to hard-code the list of import files. (This should help on OS/390 and BeOS as well.) [Jeff Trawick] *) Resolved segfault in mod_isapi when configuring with ISAPICacheFile. PR 8563, 8919 [William Rowe] *) Get binary builds working when libapr and libaprutil are built shared [Greg Ames] *) Get shared builds of libapr and libaprutil, as well as Apache DSOs, working on AIX. [Aaron Bannert, Dick Dunbar <[EMAIL PROTECTED]>, Gary Hook <[EMAIL PROTECTED]>, Victor Orlikowski, Jeff Trawick] *) Fix the handling of SSI directives in which the ">" of the terminating "-->" is the last byte in a file [Brian Pane] *) Add back in the "suEXEC mechanism enabled (wrapper: /path/to/suexec)" message that we had back in apache-1.3 and still have scattered throughout our docs. [Aaron Bannert] *) Prevent the Win32 port from continuing after encountering an error in the command line args to apache. [William Rowe] *) On a error in the proxy, make it write a line to the error log [Ian Holsman] *) Various mod_ssl performance improvements [Doug MacEachern] Changes with Apache 2.0.29 *) Add buffering in core_output_filter to ensure that long lists of small buckets don't cause small packet writes. [Brian Pane, Ryan Bloom] *) Fix the installation target to make sure that the manual is installed in the correct location. [Yoshifumi Hiramatsu <[EMAIL PROTECTED]> and Gomez Henri <[EMAIL PROTECTED]>] *) Fix the cmd command for mod_include. When we are processing a cmd command, we do not want to use the r->filename to set the command name. The command comes from the SSI tag. To do this, I added a variable to the function that builds the command line in mod_cgi. This allows the include_cmd function to specify the command line itself. [Ryan Bloom] *) Change open_logs hook to return a value, allowing you to flag a error while opening logs [Ian Holsman, Doug MacEachern] *) Change post_config hook to return a value, allowing you to flag a error post config [Ian Holsman, Jeff Trawick] *) Allow SUEXEC_BIN (the path to the suexec binary that is hard-coded into the server) to be specified to the configure script by the --with-suexec-bin parameter. [Aaron Bannert] *) Fix segv in worker MPM following accept on pipe-of-death [Brian Pane] *) Add mod_deflate to experimental. [Ian Holsman, Justin Erenkrantz] *) Bail out at configure time if an invalid MPM was specified. [jean-frederic clere <[EMAIL PROTECTED]>] *) Prevent segv in ap_note_basic_auth_failure() when no AuthName is configured [John Sterling <[EMAIL PROTECTED]>] *) Fix apxs to use sbindir. [Henri Gomez <[EMAIL PROTECTED]>] *) Fix a problem with IPv6 vhosts. PR #8118 [Jeff Trawick] *) Optimization for the BNDM string-search function in mod_include. [Brian Pane] *) Fixed the behavior of the XBitHack directive. [Taketo Kabe <[EMAIL PROTECTED]>, Cliff Woolley] PR#8804 *) The threaded MPM for Unix has been removed. Use the worker MPM instead. [various] *) APR-ize the resolver logic in mod_unique_id. This fixes a bug in logging the error from a failed DNS lookup. [Jeff Trawick] *) Added the missing macros AP_INIT_TAKE13 and AP_INIT_TAKE123. [Cliff Woolley] *) Get mod_cgid killed when a MPM exits due to a fatal error. [Jeff Trawick] *) Fix a file descriptor leak in mod_include. When we include a file, we use a sub-request, but we didn't destroy the sub-request immediately, instead we waited until the original request was done. This patch closes the sub-request as soon as the data is done being generated. [Brian Pane <[EMAIL PROTECTED]>] *) Allow modules that add sockets to the ap_listeners list to define the function that should be used to accept on that socket. Each MPM can define their own function to use for the accept function with the MPM_ACCEPT_FUNC macro. This also abstracts out all of the Unix accept error handling logic, which has become out of synch across Unix MPMs. [Ryan Bloom] *) Fix a bug which would cause the response headers to be omitted when sending a negotiated ErrorDocument because the required filters were attached to the wrong request_rec. [John Sterling <[EMAIL PROTECTED]>] *) Remove commas from the end of the macros that define directives that are used by MPMs. Prior to this patch, you would use these macros without commas, which was unlike the macros for any other directives. Now, the caller provides the comma rather than the macro providing it. This makes the macros look more like the rest of the directives. [Ryan Bloom and Cliff Woolley] *) Add 'redirect-carefully' environment option to disable sending redirects under special circumstances. This is helpful for Microsoft's WebFolders when accessing a directory resource via DAV methods. [Justin Erenkrantz] *) Begin to abstract out the underlying transport layer. The first step is to remove the socket from the conn_rec, the server now lives in a context that is passed to the core's input and output filters. This forces us to be very careful when adding calls that use the socket directly, because the socket isn't available in most locations. [Ryan Bloom] *) Really reset the MaxClients value in worker and threaded when the configured value is not a multiple of the number of threads per child. We said we did previously but we forgot to. [Jeff Trawick] *) Add Debian layout. [Daniel Stone <[EMAIL PROTECTED]>] *) If shared modules are requested and mod_so is not available, produce a fatal config-time error. [Justin Erenkrantz] *) Improve http2env's performance by cutting the work it has to do. [Brian Pane <[EMAIL PROTECTED]>] *) use new 'apr_hash_merge' function in mod_mime (performance fix) [Brian Pane <[EMAIL PROTECTED]>]