Newer
Older
(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>]
*) 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
setting of the cookie's Domain= attribute, too. PR #s 5006,
5023, 5920, 6140 [Ken Coar]
*) 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>]
*) 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
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]
*) 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>]
*) 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]
an error, other than a success or redirect. Also optimized
the parent directory, always included except in the URI '/'.
[William Rowe]
*) Refactored mod_negotiation and mod_mime to help mod_dir accept
negotiated index pages, and prevent the server from defaulting
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]
*) 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
associate .exe files with that content type. Multiviews must be
enabled to allow these to be served. [William Rowe]
*) 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>]
*) Fix broken mod_mime behavior in merging its arguments. Possible
cause of unexplicable crashes introduced in 2.0.20. [William Rowe]
*) 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]
*) 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]
*) 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]
*) Improve content generation throughout Apache, providing closer
compliance with HTML 3.2, HTML 4.01 Transitional and XHTML 1.0
Transitional specifications. [William Rowe]
*) 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]
*) 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
conditions. [Greg Ames]
*) 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
*) 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>]
*) 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>]
*) 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>]
*) 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]
*) Fix seg fault on Windows when serving files cached with mod_file_cache.
[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]
*) 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]
*) 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
*) 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>]
*) 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]
*) Fix htdigest. It would go into a loop in getline when adding
a second user. [Bill Stoddard]
*) Win32 platforms now fully support mod_userdir options. [Will Rowe]
*) Automatically generate httpd.exp for AIX.
*) 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>]
3353
3354
3355
3356
3357
3358
3359
3360
3361
3362
3363
3364
3365
3366
3367
3368
3369
3370
3371
3372
3373
3374
3375
3376
3377
3378
3379
3380
*) 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]
*) 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]
*) 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]
*) 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>]
*) 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]
*) 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.
*) 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]
*) 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]
*) 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]
*) 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
Dirk-Willem van Gulik
committed
Temme at April ApacheCon 2001 for details.
[Dirk-Willem van Gulik]
*) 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>]
*) 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]
Bill Stoddard
committed
*) 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]
*) 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]
*) 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]
*) Bring forward the --suexec-umask option which allows the
builder to preset the umask for suexec processes. [Ken Coar]
*) 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]
*) Make sure Apache sends WWW-Authenticate during a reverse proxy
request and not Proxy-Authenticate.
[Graham Leggett <minfrin@sharp.fm>]
Changes with Apache 2.0.14
*) Fix content-length computation. We ONLY compute a content-length if
We are not in a 1.1 request and we cannot chunk, and this is a keepalive
or we already have all the data. [Ryan Bloom]
*) Report unbounded containers in the config file. Previously, a typo
in the </container> directive could result in the rest of the config
file being silently ignored, with undesired defaults used.
[Jeff Trawick]
*) Make the old_write filter use the ap_f* functions for the buffering.
[Ryan Bloom]
*) Move more code from the http module into the core server. This
is core code, basically the default handler, the default input
and output filters, and all of the core configuration directives.
All of this code is required in order for the server to work, with or
without HTTP. The server is closer to working without the HTTP
module, although there is still more to do. [Ryan Bloom]
*) Fix a number of SGI compile warnings throughout the server. Fix some
bad parameters to apr_bucket_read(). Fix a bad statement in
ap_method_in_list(). For the mod_rewrite cache use apr_time_t
consistently; we were mixing apr_time_t and time_t in invalid ways
before. In load_file(), call apr_dso_error() instead of
apr_strerror() so that we get a more specific string on some platforms.
PR #6980 [Jeff Trawick]
*) Allow modules to query the MPM about it's execution profile. This
query API can and should be extended in the future, but for now,
max_daemons, and threading or forking is a very good start.
[Jon Travis <jtravis@covalent.net>]
*) Modify mod_include to send blocks of data no larger than 9k.
Without this, mod_include will wait until the whole file is parsed,
or the first tag is found to send any data to the client.
[Paul J. Reder <rederpj@raleigh.ibm.com>]
*) Fix mod_info, so that <Directory> and <Location> directives are
not displayed twice when displaying the current configuration.
[Ryan Morgan <rmorgan@covalent.net>]
*) Add config directives to override DEFAULT_ERROR_MSG and
DEFAULT_TIME_FORMAT. This was sent in as PR 6193.
[Dan Rench <drench@xnet.com>]
*) Get mod_info building and loading on Win32. [William Rowe]
*) Begin to move protocol independant functions out of mod_http. The goal
is to have only functions that are HTTP specific in the http directory.
[Ryan Bloom]
Changes with Apache 2.0.13
*) Don't assume that there will always be multiple calls to the byterange
filter. It is possible that we will need to do byteranges with only
one call to the filter. [Ryan Morgan <rmorgan@covalent.net>]
*) Move the error_bucket definition from the http module to the
core server. Every protocol will need this ability, not just
HTTP. [Ryan Bloom]
Changes with Apache 2.0.12
*) Modify mod_file_cache to save pre-formatted strings for
content-length and last-modified headers for performance.
[Mike Abbot <mja@trudge.engr.sgi.com>]
*) Namespace protect IOBUFSIZ since it is exposed in the API.
[Jon Travis <jtravis@covalent.net>]
*) Use "Basic" authentication instead of "basic" in ab, as the spec
says we should. [Andre Breiler <andre.breiler@rd.bbc.co.uk>]
*) Fix a seg fault in mod_userdir.c. We used to use the pw structure
without ever filling it out. This fixes PR 7271.
[Taketo Kabe <kabe@sra-tohoku.co.jp> and
Cliff Woolley <cliffwoolley@yahoo.com>]
*) Add a couple of GCC attribute tags to printf style functions.
[Jon Travis <jtravis@covalent.net>]
*) Add the correct language tag for interoperation with the Taiwanese
versions of MSIE and Netscape. [Clive Lin <clive@CirX.ORG>] PR#7142
*) Migrate the perchild MPM to use the new apr signal child, and
APR thread functions. [Ryan Bloom]
*) Close one copy of the CGI's stdout before creating the new process.
The CGI will still have stdout, because we have already dup'ed it.
This keeps Apache from waiting forever to send the results of a CGI
process that has forked a long-lived child process.
[Taketo Kabe <kabe@sra-tohoku.co.jp>]
*) Remove the rest of the pthreads functions from the threaded MPM.
This requires the APR support for a signal thread that was just
added. [Ryan Bloom]
*) Make mod_dir use a fixup for sending a redirect to the browser.
Before this, we were using a handler, which doesn't make much
sense, because the handler wasn't generating any data, it would
either return a redirect error code, or DECLINED. This fits the
current hooks better. [Ryan Morgan <rmorgan@covalent.net>]
*) Make the threaded MPM use APR threads instead of pthreads.
[Ryan Bloom]
*) Get mod_tls to the point where it actually appears to work in all cases.
[Ben Laurie]
*) implement --enable-modules and --enable-mods-shared for "all" and
"most". [Greg Stein]
*) Move the threaded MPM to use APR locks instead of pthread locks.
[Ryan Bloom]
*) Rename mpmt_pthread to threaded. This is more in line with the
fact that mpmt_pthread shouldn't be using pthreads directly, and
it is a smaller name that doesn't tie into anything.
[Ryan Bloom]
*) Rename the module structures so that the exported symbol matches
the file name, and it is easier to automate the installation
process (generating LoadModule directives from the module filenames).
[Martin Kraemer]
*) Remove the coalesce filter. With the ap_f* functions, this filter
is no longer needed. [Ryan Bloom]
Changes with Apache 2.0.11
*) Remove the dexter MPM. Perchild is the same basic idea, but it has the
added feature of allowing a uid/gid per child process. If no
uid/gid is specified, then Perchild behaves exactly like dexter.
[Ryan Bloom]
*) Get perchild building again. [Ryan Bloom]
*) Don't disable threads just because we are using the prefork MPM.
If somebody wants to compile without threads, they must now add
--disable-threads to the configure command line. [Ryan Bloom]
*) Begin to move the calls to update_child_status into common code, so
that each individual MPM does not need to update the scoreboard itself.
[Ryan Bloom]
*) Allow mod_tls to compile under Unix boxes where openssl has been
installed to the system include files.
[Gomez Henri <new-httpd@slib.fr>]
*) Cleanup the mod_tls configure process. This should remove any need
to hand-edit any files. We require OpenSSL 0.9.6 or later, but
configure doesn't check that yet. [Ryan Bloom]
*) Add a very early prototype of SSL support (in mod_tls.c). It is
vital that you read modules/tls/README before attempting to build
it. [Ben Laurie]
*) Fix a potential seg fault on all platforms. David Reid fixed this
on BEOS, but the problem could happen anywhere, so we don't want
to #ifdef it. [Cliff Woolley <cliffwoolley@yahoo.com>]
*) Add new LogFormat directive, %D, to log time it takes to serve a
request in microseconds. [Bill Stoddard]
*) Change AddInputFilter and AddOutputFilter to SetInputFilter and
SetOutputFilter. This corresponds nicely with the other Set
directives, which operate on containers while the Add* directives
tend to work directly on extensions. [Ryan Bloom]
*) Cleanup the header handling a bit. This uses the apr_brigade_*
functions for the buffering so that we don't need to compute
the length of the headers before we actually create the header
buffer. [Ryan Bloom]
*) Allow filters to buffer data using the ap_f* functions. These have
become macros that resolve directly to apr_brigade_*.
[Ryan Bloom]
*) Get the Unix MPM's to do a graceful restart again. If we are going
to register a cleanup with ap_cleanup_scoreboard, then we have to
kill the cleanup with the same function, and that function can't be
static. [Ryan Bloom]
*) Install all required header files. Without these, it was not
possible to compile some modules outside of the server.
[Ryan Bloom]
*) Fix the AliasMatch directive in Apache 2.0. When we brought a patch
forward from 1.3 to 2.0, we missed a single line, which broke regex
aliases. [Ryan Bloom]
*) We have a poor abstraction in the protocol. This is a temporary
hack to fix the bug, but it will need to be fixed for real. If
we find an error while sending out a custom error response, we back
up to the first non-OK request and send the data. Then, when we send
the EOS from finalize_request_protocol, we go to the last request,
to ensure that we aren't sending an EOS to a request that has already
received one. Because the data is sent on a different request than
the EOS, the error text never gets sent down the filter stack. This
fixes the problem by finding the last request, and sending the data
with that request. [Ryan Bloom]
*) Make the server status page show the correct restart time, and
thus the proper uptime. [Ryan Bloom]
*) Move the CGI creation logic from mod_include to mod_cgi(d). This
should reduce the amount of duplicate code that is required to
create CGI processes.
[Paul J. Reder <rederpj@raleigh.ibm.com>]
*) ap_new_connection() closes the socket and returns NULL if a socket
call fails. Usually this is due to a connection which has been
reset. [Jeff Trawick]
*) Move the Apache version information out of httpd.h and into release.h.
This is in preparation for the first tag with the new tag and release
system. [Ryan Bloom]
*) Begin restructuring scoreboard code to enable adding back in
the ability to use IPC other than shared memory.
Get mod_status working on Windows again. [Bill Stoddard]
*) Make mod_status work with 2.0. This will work for prefork,
mpmt_pthread, and dexter. [Ryan Bloom]
*) Correct a typo in httpd.conf.
[Kunihiro Tanaka <tanaka@apache.or.jp>] PR#7154
*) Really fix mod_rewrite map lookups this time. [Tony Finch]
*) Get the correct IP address if ServerName isn't set and we can't
find a fully-qualified domain name at startup.
PR#7170 [Danek Duvall <dduvall@eng.sun.com>]
*) Make mod_cgid work with SuExec. [Ryan Bloom]
*) Adopt apr user/group name features for mod_rewrite. Eliminates some
'extra' stat's for user/group since they should never occur, and now
resolves the SCRIPT_USER and SCRIPT_GROUP, including on WinNT NTFS
volumes. [William Rowe]
*) Adopt apr features to simplify mod_includes. This changes the
behavior of the USER_NAME variable, unknown uid's are now reported
as USER_NAME="<unknown>" rather than the old user#000 result.
WinNT now resolves USER_NAME on NTFS volumes. [William Rowe]
*) Adopt apr features for simplifing mod_userdir, and accept the new
Win32/OS2 exceptions without hiccuping. [William Rowe]
*) Replace configure --with-optim option by using and saving the
environment variable OPTIM instead. This is needed because configure
options do not support multiple flags separated by spaces.
[Roy Fielding]