Skip to content
CHANGES 538 KiB
Newer Older
William A. Rowe Jr's avatar
 
William A. Rowe Jr committed
     roll build_command_line/build_argv_list into a unified, overrideable
     ap_cgi_build_command optional function.  [William Rowe]

  *) Rewrite find_start_sequence to use a better search algorithm
     to find the start tag.  [Justin Erenkrantz]

  *) Fix a seg fault in mod_include.  When we are generating an
     internal redirect, we must set r->uri to "", not a bogus
     string, and not NULL.  [Ryan Bloom]

William A. Rowe Jr's avatar
 
William A. Rowe Jr committed
  *) Optimized location_walk, so subrequests, redirects and second passes
     now reuse previous section merges on a <Location > by <Location >
     basis, until we mismatch with the original location_walk. 
     [William Rowe]

  *) Back out the 1.45 change to util_script.c.  This change made
     us set the environment variable REQUEST_URI to the redirected
     URI, instead of the originally requested URI.
     [Taketo Kabe <kabe@sra-tohoku.co.jp>]

  *) Make mod_include do lazy evaluation of potentially expensive to
     compute variables.  [Brian Pane <bpane@pacbell.net>]

  *) Fix logging of bytes sent for HEAD requests.  %b and %B should
     log either - or 0, before this patch, they were both logging
     the file size.  [Taketo Kabe <kabe@sra-tohoku.co.jp>]

  *) Make mod_include check for BYTE_CHECK_THRESHOLD per bucket rather 
     than per character.  [Brian Pane <bpane@pacbell.net>]

William A. Rowe Jr's avatar
 
William A. Rowe Jr committed
  *) Normalize the primary request, redirects and sub-requests to
     run the same ap_process_request_internal for consistency in
     robustness, behavior and security.  [William Rowe]

  *) Fix a segfault with mod_include when r->path_info is not set
     (which is the case with mod_proxy).  [Ian Holsman <ianh@cnet.com>]

  *) Add -X functionality back.  This indicates to all MPMs and any other
     part of Apache that it should run in "debug" mode.  [Justin Erenkrantz]

William A. Rowe Jr's avatar
 
William A. Rowe Jr committed
  *) Some initial support for the cygwin platform [prefork only].
     This is not to be confused with support for the WinNT/Win32
     platform, which is the recommended configuration for native
     Win32 users.  The cygwin platform support is recommended for
     cygwin platform users. [Stipe Tolj <tolj@wapme-systems.de>]

William A. Rowe Jr's avatar
 
William A. Rowe Jr committed
  *) Changed syntax of Set{Input|Output}Filter.  The list of filters
     must be semicolon delimited (if more than one filter is given.)
     The Set{Input|Output}Filter directive now overrides a parent
     container's directive (e.g. SetInputFilter in <Directory /web/foo>
     will override any SetInputFilter directive in <Directory /web>.)
     This new syntax is more consistent with Add{Input|Output}Filter
     directives defined in mod_mime.  Also cures a bug in prior releases
     where the Set{Input|Output}Filter directive would corrupt the 
     global configuration if the multiple directives were nested.
     [William Rowe]

  *) Cured what's ailed mime for quite some time.  If an AddSomething
William A. Rowe Jr's avatar
 
William A. Rowe Jr committed
     was given in the configuration (Language, Charset, Handler or
     Encoding) Apache would set the content type as given by AddType, 
     but refused to check the mime.types file if AddType wasn't given 
     for that specific extension.  Setting the AddHandler for .html 
     without setting the AddType text/html html would cause Apache to 
     use the default content type.  [William Rowe]

  *) Added some bulletproofing to memory allocation in the LDAP cache
     code. [Graham Leggett]

  *) Move the installed /manual directory out of the /htdocs/ tree, so
     that it can be kept more independently from the remaining document
     root. The "Alias /manual ..." already allowed for easy projection
     into existing private document trees. [Martin Kraemer]

  *) Add specified user attributes to the environment when using
     mod_auth_ldap. This allows you to use mod_include to embed specified
     user attributes in a page like so:
     Hello <!--#echo var="AUTHENTICATE_CN"-->, how are you?
     [Graham Leggett]

  *) Fix a performance problem with the worker MPM.  We now create
     transaction pools once, and re-use them for each connection.
     [Aaron Bannert <aaron@clove.org>]

William A. Rowe Jr's avatar
 
William A. Rowe Jr committed
  *) Modfied mod_mime to prevent mod_negotation from serving a multiview
     of a 'handler' or 'filter', so that any filename extension that does 
     not contribute to the negotiated metadata can't be served without
     an explicit request.  E.g., if the .Z extension is associated with
     an unzip filter, the user request somefile.Z.html, mod_negotiation
     won't serve it.  It can serve somefile.Z.html when somefile.Z is
     requested, since the .Z extension is explictly requested, if the
     .html extension is associated with ContentType text/html.
     [William Rowe]

William A. Rowe Jr's avatar
 
William A. Rowe Jr committed
  *) Introduce the AddInputFilter filter[;filter...] ext [ext...]
     and corresponding AddOutputFilter syntax, to insert one or more 
     filters by mod_mime filename extension processing.
     [William Rowe]

  *) Fix a growing connection pool in core_output_filter() for 
     keepalive requests.  [Jeff Trawick]

Paul J. Reder's avatar
 
Paul J. Reder committed
  *) Moved split_and_pass_pretag_buckets back to being a
     macro at Ryans's request. Removed the return from it
     by setting and returning a return code instead. Updated
     the code to check the return code from the macro and
Paul J. Reder's avatar
 
Paul J. Reder committed
     do the right thing. [Paul J. Reder]
  *) Fix a segfault when a numeric value was received for Host:.
     [Jeff Trawick]

  *) Add a function ap_remove_input_filter.  This is to match
     up with ap_remove_output_filter.  [Ryan Bloom]

William A. Rowe Jr's avatar
 
William A. Rowe Jr committed
  *) Clean up location_walk, so that this step performs a minimum
     amount of redundant effort (it must be run twice, but it will no
     longer reparse all <Location > blocks when the request uri
     hadn't changed.)  [William Rowe]

William A. Rowe Jr's avatar
 
William A. Rowe Jr committed
  *) Eliminate proxy: (and all other 'special') processing from the
     ap_directory_walk() phase.  Modules that want to use special
     walk logic should refer to the mod_proxy map_to_location example,
     with it's proxy_walk and proxysection implementation.  This makes
     either directory_walk flavor much more legible, since that phase
     only runs against real <Directory > blocks.
     [William Rowe]
  *) SECURITY: Fix a security problem in mod_include which would allow
     an SSI document to be passed to the client unparsed.
     [Cliff Woolley, Brian Pane]

William A. Rowe Jr's avatar
 
William A. Rowe Jr committed
  *) Introduce the map_to_storage hook, which allows modules to bypass
     the directory_walk and file_walk for non-file requests.  TRACE
     shortcut moved to http_protocol.c as APR_HOOK_MIDDLE, and the
     directory_walk/file_walk happen as APR_HOOK_VERY_LAST in core.c.
     [William Rowe]

  *) Add the ability for mod_include to add the INCLUDES filter
     if the file is configured for the server-parsed handler.
     This makes the configuration for .shtml files much easier
     to understand, and allows mod_include to honor Apache 1.3
     config files.   Based on Doug MacEachern's patch to PHP
     to do the same thing.  [Ryan Bloom]

  *) force OpenSSL to ignore process local-caching and to always
     get/set/delete sessions using mod_ssl's callbacks
     [Madhusudan Mathihalli <madhusudan_mathihalli@hp.com>,
      Geoff Thorpe <geoff@geoffthorpe.net>]

  *) Make the worker MPM shutdown and restart cleanly.  This also
     cleans up some race conditions, and gets the worker using
     pools more cleanly.  [Aaron Bannert <aaron@clove.org>]

  *) Implement CRYPTO_set_locking_callback() in terms of apr_lock
     for mod_ssl
     [Madhusudan Mathihalli <madhusudan_mathihalli@hp.com>]

Paul J. Reder's avatar
 
Paul J. Reder committed
  *) Fix for mod_include. Ryan's patch to check error
     codes put a return in the wrong place. Also, the
     include handler return code wasn't being checked.
     I don't like macros with returns, so I converted
     SPLIT_AND_PASS_PRETAG_BUCKETS into a function.
     [Paul J. Reder <rederpj@raleigh.ibm.com>]

  *) fix segv in mod_mime if no AddTypes are configured
     [John Sterling <sterling@covalent.net>]

  *) Enable ssl client authentication at SSL_accept time
     [Madhusudan Mathihalli <madhusudan_mathihalli@hp.com>]
  *) Fix a segfault in mod_include when the original request has no
     associated filename (e.g., we're filtering the error document for
     a bad URI).  [Jeff Trawick]

  *) Fix a storage leak (a strdup() call) in mod_mime_magic.  [Jeff Trawick]

Paul J. Reder's avatar
 
Paul J. Reder committed
  *) The prefork and OS/2 MPMs are overwriting the pid file when a second copy
     of httpd is started and shuts down due to socket conflict. Moving the
     call to ap_log_pid solves the problem.

William A. Rowe Jr's avatar
 
William A. Rowe Jr committed
  *) Changed the late-1.3 log_config substitution %c to %X, to log the
     status of the closed connection, as it conflicts with the far more
     common, historical ssl logging directive %...{var}c.  [William Rowe]

William A. Rowe Jr's avatar
 
William A. Rowe Jr committed
  *) Added the common error/ tree to the build/install targets 
     (similar to the common icons/ tree) for the multi-language error 
     messages that Lars committed earlier.  [William Rowe]

Brian Havard's avatar
Brian Havard committed
  *) Added a multi process, multi threaded OS/2 MPM mpmt_os2.  [Brian Havard]

  *) Added a default commented-out mod_ldap and mod_auth_ldap
     configuration to httpd-std.conf and httpd-win.conf
     [Graham Leggett]

  *) Added documentation for mod_ldap and mod_auth_ldap.
     [Graham Leggett]

  *) Enabled negative caching on attribute comparisons in the LDAP cache.
     Fixed a problem where the default cache TTL was set in milliseconds
     not microseconds causing the cache to time out almost immediately.
     [Graham Leggett]

  *) Fixed all the #if APR_HAS_SHARED_MEMORY checks within the LDAP
     module code to follow APR. [Graham Leggett]

  *) Fixed LDAP cleanup on graceful restarts. LDAP connections are now
     cleaned up when the connection pool pool is cleaned up.
     [Graham Leggett]

Paul J. Reder's avatar
 
Paul J. Reder committed
  *) Fix a minor issue with Jeff Trawick's mod_include
     patch. Without this patch, the code will just allocate
     more bytes in get_combined_directive than are needed.
Paul J. Reder's avatar
 
Paul J. Reder committed

Graham Leggett's avatar
Graham Leggett committed
  *) Added the LDAP authentication module mod_auth_ldap.
     [Dave Carrigan <dave@rudedog.org>, Graham Leggett]

  *) Added the LDAP cache and connection pooling module mod_ldap.
     [Dave Carrigan <dave@rudedog.org>, Graham Leggett]

  *) Fix --enable-modules=all breakage with mod_auth_db and mod_auth_digest
     by allowing a module to disable itself if its prerequisites are not
     met.  [Justin Erenkrantz]

Ryan Bloom's avatar
Ryan Bloom committed
Changes with Apache 2.0.24
William A. Rowe Jr's avatar
 
William A. Rowe Jr committed

  *) Fix a couple of issues in mod_include when the tag appeared at
     offsets near 8192 in the file being parsed.  [Jeff Trawick]

  *) Fix an assertion failure in mod_ssl when the keepalive timeout is  
     reached.  [Jeff Trawick]

  *) Numerous improvements to the Win32 build system.  Introduced command line
     builds without requiring .mak files for MSVC 6.0 and later versions.
     Improved .dsp file compatibility for both Visual Studio 5.0 and 6.0 users.
     [William Rowe]

  *) Assorted corrections and improvements to the winnt_mpm startup code.  Better
     reporting of uninstalled services and other error conditions, and changed the 
     default service name to Apache2.  [William Rowe]

  *) Numerous improvements to the Win32 ApacheMonitor utility, including winnt_mpm 
     compatibility with existing Apache 1.3 Win32 Apache management utilites.  
     [Mladen Turk <mturk@mappingsoft.com>, William Rowe]

William A. Rowe Jr's avatar
 
William A. Rowe Jr committed
  *) Fixed the segfaults in mod_mime introduced by hash tables in 2.0.20.
     [William Rowe, Greg Ames]

  *) Rounded out the mod_mime Add/Remove pairs by adding RemoveLanguage
     and RemoveCharset directives.  [William Rowe]

  *) The Unix MPMs other than perchild now allow child server 
     processes to use the accept mutex when starting as root and 
     using SysV sems for the accept mutex.  Previously, this 
     combination would lead to fatal errors in the child server 
     processes.  perchild can't use SysV sems because of security
     issues.  [Jeff Trawick, Greg Ames]

William A. Rowe Jr's avatar
 
William A. Rowe Jr committed
  *) Added Win32 revision stamp resources to all http binaries
     (including modules/ and support/ tools.)  PR7322  [William Rowe]

  *) Fix ap_rvprintf to support more than 4K of data at one time.
     [Cody Sherr <csherr@covalent.net>]

Ken Coar's avatar
 
Ken Coar committed
  *) We have always used the obsolete/deprecated Netscape syntax
     for our tracking cookies; now the CookieStyle directive
     allows the Webmaster to choose the Netscape, RFC2109, or
     RFC2965 format.  The new CookieDomain directive allows the
Ken Coar's avatar
Ken Coar committed
     setting of the cookie's Domain= attribute, too.  PR #s 5006,
     5023, 5920, 6140 [Ken Coar]
Ken Coar's avatar
 
Ken Coar committed

  *) Tweak server/Makefile so that the rules for generating exports.c
     are compatible with make utilities which don't expand wildcards
     in a dependency list (e.g., OS/390 make, certain levels of GNU
     make).  [Jeff Trawick]

  *) Install the SSL headers.  [John Sterling <sterling@covalent.net>]

  *) Begin to sanitize the MPM configuration directives.  Now, all
     MPMs use the same functions for all common MPM directives.  This
     should make it easier to catch all bugs in these directives once.
     [Cody Sherr <csherr@covalent.net>]

Cliff Woolley's avatar
Cliff Woolley committed
  *) Close a major resource leak.  Every time we had issued a
     graceful restart, we leaked a socket descriptor.
     [Ryan Bloom]

  *) Fix a problem with the new method code.  We need to cast
     the 1 to an apr_int64_t or it will be treated as a 32-bit
     integer, and it will wrap after being shifted 32 times.
     [Cody Sherr <csherr@covalent.net> and Ryan Morgan <rmorgan@covalent.net>]

  *) Fix a bug in mod_expires.  Previous to this patch, if you
     told mod_expires to add 604800 seconds to the last-modified
     time, it actually added 604800 usec's to the last-modified time,
     so that when looking at the response it looked like nothing
     had been done.  The root of the problem was that we always compute
     time in usec's, but we ask users to input sec's.  This means we
     need to convert to usec's before using those values.
     [Ryan Bloom]

  *) The worker MPM now handles shutdown and restart requests.  It
Cliff Woolley's avatar
Cliff Woolley committed
     definitely isn't perfect, but we do stop the servers correctly.
     The biggest problem right now is that SIGHUP causes the server to
     just die.  [Ryan Bloom]

Cliff Woolley's avatar
Cliff Woolley committed
Changes with Apache 2.0.23
  *) Use the prefork MPM by default on Unix.  [various]

  *) Added a systray icon monitor application for Win32.
     [Mladen Turk <mturk@mappingsoft.com>]

  *) mod_rewrite: Fix the line ending on some non-Unix systems for 
     messages written to the rewrite log.  
     [Richard Labennett <rlabenn@us.ibm.com>]

William A. Rowe Jr's avatar
 
William A. Rowe Jr committed
  *) All mod_autoindex query parsing is now quietly quashed with the 
     IndexOption IgnoreClient.  The IndexOption SuppressColumnSorting 
     still drops the column sort <a href>'s for the column headers, but 
     IgnoreClient is required to ignore these Query options entirely.  
     [William Rowe]

  *) Introduced new mod_autoindex query argument parsing for F=[0|1|2]
     to allow the client to select plain, FancyIndexing or HTMLTable
     formatting, V=[0|1] to inhibit or enable version sorting, and 
     P=pattern to return only specific files.  The old Query Arguments
     were reorganized as C=f for sorting column 'f' (same N, D, S, or M
     as before), and O=A|D for ordering ascending or descending.  
     [William Rowe]

  *) Fixed an error in mod_include's directive parsing routines which
     caused #if, #elif, and #else expressions containing backslashes
     to be improperly evaluated.  [Cliff Woolley]

  *) Introduced new mod_autoindex IndexOptions flags: SuppressIcon to 
     drop the icon column, SuppressRules to drop the <hr> elements, 
     and HTMLTable to create rudimentary HTML table listings (implies 
     FancyIndexing).  [William Rowe]

  *) Re-introduced the mod_autoindex IndexOptions flag TrackModified
     from Apache 1.3.15.  This is needed for two reasons, first, given
     multiple machines within a server farm, ETags and Last-Modified 
     stamps won't correspond from machine to machine, and second, many 
     Unixes don't capture changes to the date or time stamp of existing 
     files, since these don't modify the dirent itself.  [William Rowe]

  *) Re-introduced the mod_autoindex IndexOptions flag FoldersFirst 
     and DirectoryWidth options from Apache 1.3.10. 
     [William Rowe, Ken Coar]

  *) Eliminated FancyIndexing directive, deprecated early in Apache
     1.3 by the IndexOptions FancyIndexing syntax.  [William Rowe]

William A. Rowe Jr's avatar
 
William A. Rowe Jr committed
  *) mod_autoindex now excludes any file names that would result in
     an error, other than a success or redirect.  Also optimized
     the parent directory, always included except in the URI '/'.
     [William Rowe]
William A. Rowe Jr's avatar
 
William A. Rowe Jr committed

William A. Rowe Jr's avatar
 
William A. Rowe Jr committed
  *) Refactored mod_negotiation and mod_mime to help mod_dir accept
     negotiated index pages, and prevent the server from defaulting
William A. Rowe Jr's avatar
 
William A. Rowe Jr committed
     to an autoindex of the directory.  mod_negotiation will now die
     with a 500 Internal Error if it could match some filenames 
     (e.g. for mod_dir) but none can be served.  mod_negotation now
     refuses to serve any file with an extention that mod_mime doesn't
     recognize, and wasn't part of the request.  [William Rowe]
William A. Rowe Jr's avatar
 
William A. Rowe Jr committed

William A. Rowe Jr's avatar
 
William A. Rowe Jr committed
  *) Eliminate mod_cgi's handling of .exe files without the .exe file
     extension.  This is already handled by multiviews, if the admin
     wishes to AddHandler .exe or define a content type handler and 
William A. Rowe Jr's avatar
 
William A. Rowe Jr committed
     associate .exe files with that content type.  Multiviews must be
     enabled to allow these to be served.  [William Rowe]
William A. Rowe Jr's avatar
 
William A. Rowe Jr committed

  *) Speed up the server's response to a spike in incoming workload
     or restarts by assigning empty scoreboard slots to new processes
     when they are available.  [Greg Ames]

  *) Add a handler to mod_includes.c.  This handler is designed to
     implement the XbitHack directive.  This can't be done with a
     fixup, because we need to check the content-type, which is
     only available in the handler phase.  [Ryan Bloom]

  *) Make the includes filter check return codes from filters lower in
     the filter chain.  If a lower level filter returns an error, then
     the request needs to stop immediately.  This allows mod_include to
     stop parsing data once a lower filter recognizes an error.
     [Ryan Bloom]

  *) Add the ability to extend the methods that Apache understands
     and have those methods <limit>able in the httpd.conf. It uses 
     the same bit mask/shifted offset as the original HTTP methods 
     such as M_GET or M_POST, but expands the total bits from an int to 
     an ap_int64_t to handle more bits for new request methods than 
     an int provides.  [Cody Sherr <csherr@covalent.net>]

William A. Rowe Jr's avatar
 
William A. Rowe Jr committed
  *) Fix broken mod_mime behavior in merging its arguments.  Possible
     cause of unexplicable crashes introduced in 2.0.20.  [William Rowe]

William A. Rowe Jr's avatar
 
William A. Rowe Jr committed
  *) Solve many mod_ssl porting issues (too many to detail) with 
     help from the whole team, but most notably [Ralf S. Engelschall, 
     Madhusudan Mathihalli <madhusudan_mathihalli@hp.com>, 
     Doug MacEachern, William Rowe, Cliff Woolley]
William A. Rowe Jr's avatar
 
William A. Rowe Jr committed

  *) More stall fixes for the threaded & worker mpm's.
     Make mod_status output more accurate.  Don't
     count workers in processes which aren't actively
     serving requests. [Greg Ames]
     
  *) Win32: Get SSI exec cgi tag working. [Bill Stoddard]
William A. Rowe Jr's avatar
 
William A. Rowe Jr committed

  *) Add a single listener/multiple worker MPM.  This MPM is
     definately not fully correct, but it allows us to solve many
     of the problems that exist in the threaded MPM.  This is a 
     modified version of the threaded MPM.  [Ryan Bloom]

William A. Rowe Jr's avatar
 
William A. Rowe Jr committed
  *) Improve content generation throughout Apache, providing closer
     compliance with HTML 3.2, HTML 4.01 Transitional and XHTML 1.0
     Transitional specifications.  [William Rowe]

William A. Rowe Jr's avatar
 
William A. Rowe Jr committed
Changes with Apache 2.0.22
  
  *) Fix a problem where the threaded MPM stalls after restarts or
     segfaults.  Also prevent multiple active processes from using
     the same scoreboard slot.  [Greg Ames]
William A. Rowe Jr's avatar
 
William A. Rowe Jr committed
  *) Apache/Win32 now fills in the service description with Apache's
     server version string, including loaded and advertised modules.
     [William Rowe]

  *) Improved support for the Win32 build, to recover gracefully from
     missing apr or apr-util directories or the awk interpreter, 
     create the proper cgi-bin examples, including a test-cgi.bat, and 
     fix the perl shebang line for printenv.pl, when installing from 
     the build environment.  [William Rowe]

  *) Fix a segfault in threaded.c caused by passing uninitialized
     apr_thread_t * to apr_thread_join().  [Jeff Trawick]

  *) Use new APR number conversion functions to reduce CPU consumption 
     when setting the content length, and in mod_log_config.
     [Brian Pane]
     
  *) Fix problem reported by Taketo Kabe <kabe@sra-tohoku.co.jp>
     where HEAD response headers were being repeated twice for
     files greater than 32K bytes (4*AP_MIN_BYTES_TO_WRITE). This
     problem in the http_header filter was exposed by the recent rewrite
     of the content_length filter. [Taketo Kabe, Bill Stoddard]

  *) Fix seg faults in mod_status with ExtendedStatus enabled, after
     restarts.  A garbage pointer to a vhost's server_rec from the
     previous generation was being left around under certain
Ryan Bloom's avatar
Ryan Bloom committed

  *) Fix a cosmetic problem with mod_include.  Non-existant SSI vars
     used to appear as '(none', without the closing paren.
     [Günter Knauf <eflash@gmx.net>]

  *) Improve the exports generating awk script.  In the past, we had
     work around problems in the awk script by avoiding some #if and
     #ifdefs.  This has bitten us many times in generating the exports.c
     file.  This improvement allows corrects the header file parsing.
     [Sander Striker <striker@apache.org>]

Changes with Apache 2.0.21
William A. Rowe Jr's avatar
 
William A. Rowe Jr committed
  *) Resolve the Win32 htpasswd bug, where a file that existed would be
     overwritten, regardless of the -c flag.
     [William Rowe, Mladen Turk <mladen.turk@mail.inet.hr>]

William A. Rowe Jr's avatar
 
William A. Rowe Jr committed
  *) Introduce connection sub-pools into ab.  Truncating the lifetime
     of these allocations means that ab no longer perpetually grows
     its working set, running out of memory on large request attempts.
     [William Rowe]

  *) Make scoreboard creation a hook.  This allows management
     modules to have access to the scoreboard at the time that it is
     created, and at every restart request.  
     [Cody Sherr <csherr@covalent.net>]

Paul J. Reder's avatar
 
Paul J. Reder committed
  *) Changed AP_MPMQ_MAX_DAEMONS to refer to MaxClients and
     added an AP_MPMQ_MAX_DAEMON_USED to refer to the highest
     daemon index actually used in the scoreboard. I also
     updated the pertinent calls. [Paul J. Reder]

  *) Win32: Prevent listening sockets from being inherited by
     the Apache child process, CGI scripts, rotatelog process
     etc.  If the Apache child process segfaults, any processes 
     that the child started are not reaped. Prior to this fix,
     these processes inherited the listening sockets which sometimes
     prevented the restarted Apache child process from accepting
     connections (ie, the server would hang). 
     [Bill Stoddard]

  *) Provide vhost and request strings when ExtendedStatus is on.
     [Greg Ames]

  *) Fix some issues with the pod and prefork: check the pod *after*
     processing a connection so that a server processing a time-
     consuming request bails out as soon as practical; when the
     parent process wakes up a server process via connect(), use an
     APR timeout on the connect() so that we don't hang for a long
     time if there aren't server processes around to do accept().
     [Jeff Trawick, Greg Ames]

  *) Performance improvement to mod_mime.c. find_ct() in mod_mime, 
     spends a lot of time in apr_table_get calls.  Using the default 
     httpd.conf, the tables for languages and charsets are somewhat
     large, so the time spent scanning them on each request is
     significant. Replacing the tables with hash tables provides
     a nice speedup. [Brian Pane <bpane@pacbell.net>]
  *) Add two functions to allow modules to access random parts of the
     scoreboard.  This allows modules compiled for one MPM to access the
     scoreboard, even if it the server was compiled for another MPM.
     [Harrie Hazewinkel <harrie@covalent.net>]

Changes with Apache 2.0.20
  *) Fix problem in content-length filter where the filter would
     buffer all the output from a CGI before sending any bytes
     down the filter stack to the network. This problem would cause
     significant memory consumption if the CGIs generated
     lots of bytes. [Bill Stoddard]
  
  *) Get non-blocking CGI pipe reads working with the bucket brigades.
     [Bill Stoddard]
Bill Stoddard's avatar
Bill Stoddard committed
  *) Fix seg fault on Windows when serving files cached with mod_file_cache.
Cliff Woolley's avatar
 
Cliff Woolley committed
     [Bill Stoddard]

  *) Fix a bug in the threaded MPM that would cause it to kill off all
     workers immediately after starting if the number of workers started
     was above a certain threshold.  [Ryan Bloom, Bill Stoddard]
Cliff Woolley's avatar
 
Cliff Woolley committed

Changes with Apache 2.0.19
  *) Fix problem with threaded MPM.  The problem was that if each child
     process was busy serving a single long-lived request and the server
     was sent a graceful restart signal, the server would stop serving
     requests.  This would happen because each child process would wait to
     die until the last thread was done, and the parent wouldn't spawn any
     new children until a process died.  Now, the parent looks at the fact
     that the children are dying gracefully, and starts new children.
     Those new children only start enough threads to compliment the number
     of threads in the other child process that shares the same spot in
     the scoreboard.  In this way, we make sure to never go over
     MaxClients.  [Ryan Bloom]

William A. Rowe Jr's avatar
 
William A. Rowe Jr committed
  *) modified mod_negotiation and mod_autoindex to speed up by almost a
     factor of two on apr_dir_read()-enhanced platforms, such as Win32
     and OS2, by calling ap_sub_request_lookup_dirent() with the results
     already provided by apr_dir_read().  [William Rowe]

  *) mod_file_cache is now more robust to filtering and serves requests
     slightly more efficiently.  [Cliff Woolley]

  *) Fix problem handling FLUSH bucket in the chunked encoding filter.
     Module was calling ap_rwrite() followed by ap_rflush() but the 
     served content was not being displayed in the browser. Inspection
     of the output stream revealed that the first data chunk was
     missing the trailing CRLF required by the RFC.  [Bill Stoddard]
  *) apxs no longer generates ap_send_http_header() in the example handler

Jeff Trawick's avatar
Jeff Trawick committed
  *) Fix an ab problem which could cause a divide-by-zero exception
     with certain invocations (e.g., ab -k -c 6 -n 100 localhost/).
     [Ian Holsman <ianh@cnet.com>]

William A. Rowe Jr's avatar
 
William A. Rowe Jr committed
  *) Solve case-insensitive platforms' confusion about negotiated
     filenames, allowing files of differnt case to match in choosing
     the document to serve.  [William Rowe]

  *) Fix brokenness when ThreadsPerChild is higher than the built-in
     limit.  We left ap_threads_per_child at the higher value which
     led to segfaults when doing certain scoreboard operations.
     [Jeff Trawick]

  *) Fix seg faults and/or missing output from mod_include.  The
     default_handler was using the subrequest pool for files and
     MMAPs, even though the associated APR structures typically 
     live longer than the subrequest. [Greg Ames]
  
  *) Extend mod_setenvif to support specifying regular expressions
     on the SetEnvIf (and SetEnvIfNoCase) directive attribute field.
     Example:  SetEnvIf ^TS*  [a-z].* HAVE_TS 
     will cause HAVE_TS to be set if any of the request headers begins 
     with "TS" and has a value that begins with any character in the
     set [a-z]. [Bill Stoddard]

  *) httpd children now re-bind themselves to a random CPU on
     multiprocessor systems on AIX via bindprocessor() in 2.0.
     [Victor J. Orlikowski]
William A. Rowe Jr's avatar
 
William A. Rowe Jr committed

  *) Fix htdigest. It would go into a loop in getline when adding 
     a second user. [Bill Stoddard]

William A. Rowe Jr's avatar
 
William A. Rowe Jr committed
  *) Win32 platforms now fully support mod_userdir options.  [Will Rowe]

  *) Automatically generate httpd.exp for AIX.
Victor J. Orlikowski's avatar
Victor J. Orlikowski committed
     DSOs now work again on AIX in 2.0
     [Victor J. Orlikowski]
  *) Add a new request hook, error_log.  This phase allows modules
     to act on the error log string _after_ it has been written
     to the error log.  The goal for this hook is to allow monitoring
     modules to send the error string to the monitoring agent.
     [Ryan Bloom]

  *) Modify mod_echo to make it use filters for input and output.
     [Ryan Morgan <rmorgan@covalent.net>]

  *) Extend mod_headers to support conditional driven Header 
     add, append and set. Use SetEnvIf to set an envar and conditionally
     add/append/set headers based on this envar thusly:

     SetEnvIf TSMyHeader value HAVE_TSMyHeader
     Header add MyHeader "%t %D" env=HAVE_TSMyHeader

     If the request contains header "TSMyHeader: value" then header
     MyHeader: "t=xxxxxxxxxx D=yyyy" will be sent on the response.
     [Bill Stoddard]

  *) Extend mod_headers to support using format specifiers on Header
     add, append and set header values. Two format specifiers are supported:

     %t - reports, in UTC microseconds since the epoch, when the
          request was received.

     %D - reports the time, in microseconds, between when the request was 
          received and the response sent. 

     Examples:
     Header add MyHeader "This request served in %D microseconds. %t"

     results in a header being added to the response that looks like this:
     
     MyHeader: This request served in D=5438 microseconds. t=991424704447256

     [Bill Stoddard]
  *) Fix reset_filter().  We need to be careful how we remove filters.
     If we set r->output_filters to NULL, we also have to reset the
     connection's filters.  [John Sterling]

  *) Optimise reset_filter() in http_protocol.c. [Greg Stein]

  *) Add a check to ap_die() to make sure the filter stack is sane and
     contains the correct basic filters when an error occurs. This fixes
     a problem where headers are not being sent on error. [John Sterling]

  *) New Header directive 'echo' option. "Header echo regex" will
     cause any headers received on the request that match regex to be
     echoed to (included in) the response headers.
     [Bill Stoddard]
  *) include/ap_compat.h tested and set APR_COMPAT_H instead of AP_COMPAT_H.
     This prevented the inclusion of apr_compat.h.  PR #7773
     [Oleg Broytmann <phd@phd.pp.ru>]

  *) Moved util_uri to the apr-util library.  This required a bunch of
     apr_name changes for the uri utility functions.  [Justin Erenkrantz]

Graham Leggett's avatar
Graham Leggett committed
  *) Move the addition of default AP_HTTP_HTTP_HEADER filters to the
     insert_filter phase so that other filters are not bypassed by default.
     [Graham Leggett]

  *) Reimplement mod_headers as an output filter. mod_headers can now
     add custom headers to inbound requests using the RequestHeader directive
     and to responses using the same old Header directive.  [Graham Leggett]

Changes with Apache 2.0.18
  *) Fix command-line processing so that if a bad argument is specified
     Apache will exit.  [Jeff Trawick]

  *) Change the make targets and rules to be consistent in all of the
     Apache-owned source trees.  [Roy Fielding]
     
  *) Fix processing of the TRACE method.  Previously we passed bogus
     parms to form_header_field() and it overlaid some vhost structures,
     resulting in a segfault in check_hostalias(). 
     [Greg Ames, Jeff Trawick]

  *) Win32: Add support for reliable piped logs. If the logging process
     goes down, Apache will automatically restart it. This function has 
     been part of Apache on Unix/Linux/BSD since the early v1.3 releases.
     [Bill Stoddard]

  *) Do not start piped log processes during the config file 
     preflight.  This change also circumvents a problem on 
     Windows where the rotatelog processes created during preflight
     was not getting cleaned up properly.
     [Bill Stoddard]

  *) add "Request Phase Participation" info to mod_info
     [Doug MacEachern]
Paul J. Reder's avatar
 
Paul J. Reder committed
  *) Make first phase changes to the scoreboard data structures in
     preparation for the rewriting of the scoreboard per my posted
     design notes. [Paul J. Reder]

  *) Fix httpd's definition of LTFLAGS to be consistent with that of apr
     and apr-util, allow it to be overridden by the configure command-line
     (default="--silent") and introduce LT_LDFLAGS to replace what we were
     formerly abusing as LTFLAGS.  [Roy Fielding]
  *) Clean up the reporting of incorrect closing container tags.
     [Barrie Slaymaker <barries@slaysys.com>]

  *) Simplify the configure process by moving all libtool stuff to APR
     and moving hints.m4 inline.  [Roy Fielding]

  *) Add the AP_DECLARE()/AP_CORE_DECLARE macros on the return types
     of functions used by mod_proxy for export in the DLL 
     [Ian Holsman <IanH@cnet.com>]

  *) Prevent a hang when a cgi handled by mod_cgid tries to read a
     request body from its stdin but no reqest body is being written to 
     the cgi.  [Jeff Trawick]

  *) mod_log_config: %c connection status incorrectly logged
     as "-" (non-keepalive) when MaxKeepAliveRequests is set to 0.
     [Bill Stoddard]

  *) Get mod_cern_meta working under Windows
     [Bill Stoddard]
Paul J. Reder's avatar
 
Paul J. Reder committed

  *) Create Files, and thus MMAPs, out of the request pool, not the
     connection pool.  This solves a small resource leak that had us
     not closing files until a connection was closed.  In order to do
     this, at the end of the core_output_filter, we loop through the
     brigade and convert any data we have into a single HEAP bucket
     that we know will survive clearing the request_rec.
     [Ryan Bloom, Justin Erenkrantz <jerenkrantz@ebuilt.com>,
      Cliff Woolley]

  *) Completely revamp configure so that it preserves the standard make
     variables CPPFLAGS, CFLAGS, CXXFLAGS, LDFLAGS and LIBS by moving
     the configure additions to EXTRA_* variables.  Also, allow the user
     to specify NOTEST_* values for all of the above, which eliminates the
     need for THREAD_CPPFLAGS, THREAD_CFLAGS, and OPTIM.  Fix the setting
     of INCLUDES and EXTRA_INCLUDES.  Check flags as they are added to
     avoid pointless duplications.  Fix the order in which flags are given
     on the compile and link lines.  Remove obsolete macros APR_DOEXTRA,
     AC_ADD_LIBRARY, AC_CHECK_DEFINE, APACHE_PASSTHRU, and APACHE_ONCE.
     Added APR_SAVE_THE_ENVIRONMENT and APR_RESTORE_THE_ENVIRONMENT macros.
     Renamed AC_TYPE_RLIM_T macro to APACHE_TYPE_RLIM_T.  [Roy Fielding]
  *) Get mod_tls to compile/work better on Windows.  PR #7612
     [Bernhard Schrenk <b.schrenk@improx.com>]

Greg Ames's avatar
 
Greg Ames committed
  *) Fix shutdown/restart hangs in the threaded MPM.
     [Jeff Trawick, Greg Ames, Ryan Bloom]
  
  *) Removed the keptalive boolean from conn_rec because it is now only
     used by a single routine and can be replaced by a local variable.
     [Greg Stein, Ryan Bloom, Roy Fielding]

Paul J. Reder's avatar
 
Paul J. Reder committed
  *) Patch prefork to put enough of the signal processing back in so that
     signals are all handled properly now. The previous patch fixed the
     deadlock race condition, but broke the user directed signal handling.
     This fixes it to work the way it did before my previous prefork patch
     (primarily, SIGTERM is now working).
  *) Change how input filters decide how much data is returned to the
     higher filter.  We used to use a field in the conn_rec, with this
     change, we use an argument to ap_get_brigade to determine how much
     data is retrieved. [Ryan Bloom]

  *) Fix seg fault at start-up introduced by Ryan's change to enable
     modules to specify their own logging tags. mod_log_config
     registers an optional function, ap_register_log_handler().
     ap_register_log_handler() was being called by http_core before
     the directive hash table was created. This patch creates the
     directive hash table before ap_register_log_handler() is
     registered as an optional function.
     [jean-frederic clere <jfrederic.clere@fujitsu-siemens.com>]
  *) Add ap_set_int_slot() function
     [John K. Sterling <sterling@covalent.net>]

  *) Under certain circumstances, Apache did not supply the
     right response headers when requiring authentication.
     [Gertjan van Wingerde <Gertjan.van.Wingerde@cmg.nl>] PR#7114
     (This is a port of the change that went into Apache 1.3.19.)

  *) Allow modules to specify their own logging tags.  This basically
     allows a module to tell mod_log_config that when %x is encountered
     a specific function should be called.  Currently, x can be any single
     character.  It may be more useful to make this a string at some point.
     [Ryan Bloom]

Changes with Apache 2.0.17
  *) If a higher-level filter handles the the byterange aspects of a
     request, then the byterange filter should not try to redo the
     work.  The most common case of this happening, is a byterange
     request going through the proxy, and the origin server handles
     the byterange request.  The proxy should ignore it.
     [Graham Leggett <minfrin@sharp.fm>]

  *) Changed the threaded mpm to have child_main join to each of the
     worker threads to make sure the kids are all gone before child_main
     exits after a signal (cleanup from perform_idle_server_maintenance).
     This is an extension of Ryans recent commit to make the child_main
     the signal thread.

Ryan Bloom's avatar
Ryan Bloom committed
  *) Add more options to the ap_mpm_query function.  This also allows MPMs to
     report if their threads are dynamic or static.  Finally, this also
     implements a new API, ap_show_mpm, which returns the MPM that was
     required into the core. [Harrie Hazewinkel <harrie@covalent.net>]

  *) Do not install the binaries from the support directory twice.
     [jun-ichiro hagino <itojun@iijlab.net>]

  *) The ap_f* functions should flush data to the filter that is passed
     in, not the the filter after the one passed in.
     [Ryan Morgan <rmorgan@covalent.net>]

  *) Make ab work again by changing its native types to apr types and formats.
     [Justin Erenkrantz <jerenkrantz@ebuilt.com>]

  *) Move the byterange filter and all of the supporting functions back
     to the HTTP module.  The byterange filter turned out to be very
     HTTP specific, and it belongs in the HTTP module.  [Greg Stein]

  *) Make clean, distclean, and extraclean consistently according to the
     Gnu makefile guidelines.  [Justin Erenkrantz <jerenkrantz@ebuilt.com>]

  *) Fix errors in the renaming of the apr_threadattr_detach_xxx functions.
     This may have been causing problems stopping processes in the threaded
     mpm's. [Greg Ames]

William A. Rowe Jr's avatar
 
William A. Rowe Jr committed
  *) Fix content-length in mod_negotiation to a long int representation.
     [William Rowe]

  *) Remove BindAddress from the default config file.
     [giles@nemeton.com.au]

  *) Allow module authors to add a module to their Apache build using
     --with-module, without re-running buildconf.  The syntax is:
	--with-module=module_type:/path/to/module.c
     The configure script will copy the module.c file to 
     modules/module_type, and it will be added to the relevant Makefiles.
     currently, this only works for static modules.  [Ryan Bloom]

  *) Changes required to make prefork clean up idle children properly.
     There was a window during which a starting worker deadlocks when
     an idle cleanup arrives before it completes init. Apache then keeps
     trying to cleanup the same deadlocked worker forever (until higher
     pids come along, but it still will never reduce below the deadlocked
     pid). Thus the number of children would not reduce to the correct
     idle level. [Paul J. Reder]

Changes with Apache 2.0.16

  *) Change the default installation directory to /usr/local/apache2,
     as now defined by the "Apache" layout in config.layout. [Marc Slemko]

  *) OS/2: Added support for building loadable modules as OS/2 DLLs. 
     [Brian Havard]

  *) Get MaxRequestsPerChild working with the Windows MPM.
     [Bill Stoddard]
William A. Rowe Jr's avatar
 
William A. Rowe Jr committed
  *) Make generic hooks to work, with mod_generic_hook_import/export
     experimental modules.  [Ben Laurie, Will Rowe]

  *) Fix segfaults for configuration file syntax errors such as
     "<Directory>" followed by "</Directory" and
     "<Directory>" followed by "</Directoryz>".  [Jeff Trawick]

  *) Cleanup the --enable-layout option of configure.  This makes
     us use a consistent location for the config.layout file, and it
     makes configure more portable.
     [jun-ichiro hagino <itojun@iijlab.net>]

  *) Changes to 'ab'; fixed int overrun's, added statistics, output in
     csv/gnuplot format, rudimentary ssl support and various other tweaks
     to make results more true to what is measured. The upshot of this it
     turns out that 'ab' has often underreported the true performance of
     apache. Often by a order of magnitude :-) See talk/paper of Sander 
  *) Clean up mod_cgid's temporary request pool.  Besides fixing a
     storage leak this ensures that some unnecessary pipes are closed.
     [Jeff Trawick]

  *) Performance: Add quick_handler hook. This hook is called at the
     very beginning of the request processing before location_walk,
     translate_name, etc.  This hook is useful for URI keyed content
     caches like Mike Abbott's Quick Shortcut Cache.
     [Bill Stoddard]
  *) top_module global variable renamed to ap_top_module [Perl]

  *) Move ap_set_last_modified to the core.  This is a potentially 
     controversial change, because this is kind of HTTP specific.  However
     many protocols should be able to take advantage of this kind of
     information.  I expect that headers will need one more layer of
     indirection for multi-protocol work, but this is a small step in
     the right direction.  [Ryan Bloom]

  *) Enable mod_status by default.  This matches what Apache 1.3 does.
     [Ed Korthof]

  *) Add a ScriptSock directive to the default config file.  This is
     only enabled when mod_cgid is used.  
     [Taketo Kabe <kabe@sra-tohoku.co.jp>]

Ryan Bloom's avatar
Ryan Bloom committed
Changes with Apache 2.0.15

  *) Untangled the buildconf script and eliminated the need for build's
     aclocal.m4, generated_lists, build.mk, build2.mk, and a host of other
     libtool muck that is now under srclib/apr/build.  [Roy Fielding]

  *) Win32: Don't accept more connections than we have worker threads
     to handle.
     [Bill Stoddard]

  *) Fix bug in the Unix threaded.c MPM that allowed child processes
     to fork() new child processes. 
     [Bill Stoddard]
  *) SECURITY: Fix a major security problem with double-reverse lookup 
     checking.  Previously, a client connecting over IPv4 would not be 
     matched properly when the server had an IPv6 listening socket.  
     PR #7407   [Taketo Kabe <kiabe@sra-tohoku.co.jp>]
  *) Change the way the beos MPM handles polling to allow it to stop and
     restart.  Problem was the sockets being polled were being reset by
     the select call, so once it had accepted a connection it was no
     longer listening on the UDP socket we use for shutdown instructions.
     APR needs to be altered, patch on it's way. [David Reid]

  *) Empty out the brigade shared by ap_getline()/ap_get_client_block()
     on error exit from ap_getline().  Some other code got upset because
     the wrong data was in the brigade.  [Greg Ames, Jeff Trawick]

  *) Handle ap_discard_request_body() being called more than once.
     [Greg Ames, Jeff Trawick]

  *) Get rid of an inadvertent close of file descriptor 2 in
     mod_mime_magic.  [Greg Ames, Jeff Trawick]

  *) Add a hook, create_request.  This hook allows modules to modify
     a request while it is being created.  This hook is called for all
     request_rec's, main request, sub request, and internal redirect.
     When this hook is called, the the r->main, r->prev, r->next
     pointers have been set, so modules can determine what kind of
     request this is.  [Ryan Bloom]

  *) Cleanup the build process a bit more.  The Apache configure
     script no longer creates its own helper scripts, it just
     uses APR's.  
     [jean-frederic clere <jfrederic.clere@fujitsu-siemens.com>]

  *) Stop the forced downgrade of the connection to HTTP/1.0 for
     proxy requests.  [Graham Leggett]

  *) Avoid using sscanf to determine the HTTP protocol number in
     the common case because sscanf is a performance hog. From
     Mike Abbot's Accelerating Apache patch number 6.
     [Mike Abbot <mja@trudge.engr.sgi.com>, Bill Stoddard]
Ken Coar's avatar
 
Ken Coar committed

  *) SECURITY: Fix a security exposure in mod_access.  Previously when 
     IPv6 listening sockets were used, allow/deny-from-IPv4-address rules 
     were not evaluated properly (PR #7407).  Also, add the ability to 
     specify IPv6 address strings with optional prefix length on Allow 
     and Deny.  [Jeff Trawick]

Ken Coar's avatar
 
Ken Coar committed
  *) Enhance rotatelogs so that a UTC offset can be specified, and
     the logfile name can be formatted using strftime(3).  (Brought
     forward from 1.3.)  [Ken Coar]

  *) Reimplement the Windows MPM (mpm_winnt.c) to eliminate calling 
     DuplicateHandle on an IOCompletionPort (a practice which
     MS "discourages"). The new model does not rely on associating
     the completion port with the listening sockets, thus the
     completion port can be completely managed within the child 
     process.  A dedicated thread accepts connections off the network,
     then calls PostQueuedCompletionStatus() to wake up worker
     threads blocked on the completion port.
     [Bill Stoddard]
Ken Coar's avatar
 
Ken Coar committed
  *) Bring forward the --suexec-umask option which allows the
     builder to preset the umask for suexec processes.  [Ken Coar]

Ken Coar's avatar
 
Ken Coar committed
  *) Add a -V flag to suexec, which causes it to display the
     compile-time settings with which it was built.  (Only
     usable by root or the AP_HTTPD_USER username.)  [Ken Coar]

  *) Mod_include should always unset the content-length if the file is
     going to be passed through send_parsed_content.  There is no to
     determine if the content will change before actually scanning the
     entire content.  It is far safer to just remove the C-L as long
     as we are scanning it.  [Ryan Bloom]