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]>]

Reply via email to