Newer
Older
*) Fix segfault when proxy recieves an invalid HTTP response [Ian Holsman]
*) OS/390: Get make install to properly copy DSO modules.
[Jeff Trawick]
*) Win32: Fix bug in mod_status with displaying "Restart Time"
[Bill Stoddard]
Justin Erenkrantz
committed
*) Fix IPv6 name-based virtual hosts. [Jeff Trawick]
*) Introduce AddOutputFilterByType directive. [Justin Erenkrantz]
*) Fix DEBUG_CGI support in mod_cgi. PR 9670, 9671.
*) Fix incorrect check for script_in in mod_cgi. PR 9669.
Justin Erenkrantz
committed
*) Fix segfault and display error when SSLMutex file can not be
Justin Erenkrantz
committed
*) Add reference counting to mod_mem_cache cache objects to
better manage removing objects from the cache.
[Bill Stoddard]
*) Change the verbage on the ScoreBoardFile in our default configs.
Also change the default to be commented out (unspecified) so we
get anonymous shared memory by default. [Aaron Bannert]
*) Implement new ScoreBoardFile directive logic. This affects how
we create the scoreboard's shared memory segment. If the directive
is present, a name-based segment is created. If the directive is
not present, first an anonymous segment is created, and if that
fails, a name-based segment is created from a file of the name
DEFAULT_SCOREBOARD. This gives third-party applications the
ability to access our scoreboard. [Aaron Bannert]
Justin Erenkrantz
committed
*) Allow mod_deflate to work with non-GET requests and properly send
Justin Erenkrantz
committed
*) Fix ap_directory_merge() to correctly merge configs when there is
no <Directory /> block. [Justin Erenkrantz, William Rowe]
*) Remove spurious debug messsages that are normal under HTTP
keep-alive logic. [Jeff Trawick, Justin Erenkrantz]
*) Fix a bug in mod_cgid that would prevent proper shutdown death
of the cgid process. [Aaron Bannert]
*) Add signal handling back in to the worker MPM for the one_process
(-X, -DDEBUG, -DONE_PROCESS) case. [Aaron Bannert]
*) Performance: Reuse per-connection transaction pools in the
worker MPM, rather than destroying and recreating them. [Brian Pane]
*) Remove all signals from the worker MPM's child process. Instead,
the parent uses the Pipe of Death for all communication with the
child processes. [Ryan Bloom]
*) 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]
Justin Erenkrantz
committed
*) 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 <breid customlogic.com>,
Zvi Har'El <rl math.technion.ac.il>]
*) 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]
Jeff Trawick
committed
*) 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]
*) 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
*) New Directive Option for ProxyPass. It now can block a location
*) 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)
*) 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]
Justin Erenkrantz
committed
*) 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.
*) 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
*) HPUX 11.*: Do not kill the child process when accept()
returns ENOBUFS on HPUX 11.*. (ported from th 1.3 patch)
[Madhusudan Mathihalli <madhusudan_mathihalli hp.com>, Bill Stoddard]
*) Fix a problem in the parsing of the <Proxy foo> directive.
[Jeff Trawick]
Doug MacEachern
committed
*) 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.
*) 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]
Doug MacEachern
committed
*) Fix SSLPassPhraseDialog exec: and SSLRandomSeed exec:
[Doug MacEachern]
*) 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.
*) 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
*) 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]
Bill Stoddard
committed
*) 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 <RLDunbar pacbell.net>,
Gary Hook <ghook us.ibm.com>, 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]
Doug MacEachern
committed
*) Various mod_ssl performance improvements [Doug MacEachern]
*) 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 <hiramatu boreas.dti.ne.jp> and
Gomez Henri <hgomez slib.fr>]
*) 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.
Doug MacEachern
committed
*) Prevent segv in ap_note_basic_auth_failure() when no AuthName is
Justin Erenkrantz
committed
*) 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.
*) 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
*) 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.
*) 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]
*) 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
*) use new 'apr_hash_merge' function in mod_mime (performance fix)
Changes with Apache 2.0.28
*) Fix infinite loop in mod_cgid.c.
[Dale Ghent <daleg elemental.org>, Brian Pane <bpane pacbell.net>]
*) When no port is given in a "ServerName host" directive, the
server_rec->port is now set to zero, not 80. That allows for
run-time deduction of the correct server port (depending on
SSL/plain, and depending also on the current setting of
UseCanonicalName). This change makes redirections
work, even with https:// connections. As in Apache-1.3, the
connection's actual port number is never used, only the ServerName
setting or the client's Host: setting. Documentation updated
to reflect the change. [Martin Kraemer]
*) Add a '%{note-name}e' argument to mod-headers, which works in
the same way as mod_log_confg. [Ian Holsman]
*) Fix the spelling of the AP_MPMQ_MIN_SPARE_DAEMONS and
AP_MPMQ_MAX_REQUESTS_DAEMON macros in ap_mpm.h and all standard
MPMs. [Cliff Woolley]
*) Introduce htdbm, a user management utility for db/dbm authorization
*) Optimize usage of strlen and strcat in ap_directory_walk.
Changes with Apache 2.0.27
*) Introduce an Apache mod_ssl initial configuration template
(ssl.conf, generated from ssl-std.conf). [Ralf S. Engelschall]
*) Fixed a memory leak in the getline parsing code that could
be triggered by arbitrarily large header lines. Requests
from the core input filter for single lines are now limited
to HUGE_STRING_LEN (8192 bytes). [Aaron Bannert]
*) Fix a truncation bug in how we print the port on the Via: header.
The routine that prints the Via: header now takes a length for
*) Some syntax errors in mod_mime_magic's magic file can result
in a 500 error, which previously was unlogged. Now we log the
error. [Jeff Trawick]
*) Add the support/checkgid helper app, which checks the run-time
validity of group identifiers usable in the Group directive.
[Ken Coar]
*) Various --enable-so options have been fixed: --enable-so is
treated as "static"; explicit --enable-so=shared issues an error;
and explicit --enable-so fails with error on systems without
APR_HAS_DSO. [Aaron Bannert]
*) Fix a segfault in the core input filter when the client socket
gets disconnected unexpectedly. [Cliff Woolley]
*) Fix the reporting for child processes that die. This removes
all of the non-portable W* macros from Apache.
[Jeff Trawick and Ryan Bloom]
*) Win32: Track and display "Parent Server Generation:" in
mod_status output. The generation will be bumped at
server graceful restart, when the child process exits
by hitting MaxRequestsPerChild or if the child
process exits abnormally. [Bill Stoddard]
*) Win32: Fix problem where MaxRequestsPerChild directive was
not being picked up in favor of the default. Enable
the parent to start up a new child process immediately upon
the old child starting shutdown.
[Bill Stoddard]
*) Fix some bungling of the remote port in rfc1413.c so that
IdentityCheck retrieves the proper user id instead of failing
and thus always returning "nobody."
*) Simplified mod_env's directives to behave as most directives are
expected, in that UnsetEnv will not unset a SetEnv and PassEnv
directive following that UnsetEnv within the same container.
Also provides a runtime startup warning if a PassEnv configured
environment value is undefined. [William Rowe]
*) The worker MPM is now completely ported to APR's new lock API. It
uses native APR types for thread mutexes, cross-process mutexes,
and condition variables. [Aaron Bannert]
*) Sync up documentation to remove all references to the now deprecated
Port directive. [Justin Erenkrantz]
*) Moved all ldap modules from the core to httpd-ldap sub-project
[Ryan Bloom]
*) Exit when we can't listen on any of the configured ports. This
is the same behavior as 1.3, and it avoids having the MPMs to
deal with bogus ap_listen_rec structures. [Jeff Trawick]
*) Cleanup the proxy code that creates a request to the origin
server. This change adds an optional hook, which allows modules
to gain control while the request is created if the proxy module
is loaded. The purpose of this hook is to allow modules to add
input and/or output filters to the request to the origin. While
I was at it, I made the core use this hook, so that proxy request
creation uses some of the code from the core. This can still be
greatly improved, but this is a good start. [Ryan Bloom]
*) Port the MaxClients changes from the worker MPM to the threaded
MPM. [Ryan Bloom]
*) Fix mod_proxy so that it handles chunked transfer-encoding and works
with the new input filtering system. [Justin Erenkrantz]
*) Introduce the MultiviewsMatch directive, to allow the operator
to be flexible in recognizing Handlers and Filters filename
extensions as part of the Multiviews matching logic, strict with
MultiviewsMatch NegotiatedOnly to accept only filename extentions
that designate negotiated parameters, (content type, charset, etc.)
or MultiviewsAll for the 1.3 behavior of matching any files, even
if they have unregistered extensions. [William Rowe]
*) Fixed the configure script to add a LoadModule directive to
the default httpd.conf for any module that was compiled
*) rewrite mod_ssl input filtering to work with the new input filtering
system. [Justin Erenkrantz]
*) prefork: Don't segfault when we are able to listen on some but
not all of the configured ports. [Jeff Trawick]
*) Build mod_so even if no core modules are built shared.
*) Introduce ap_directory_walk rewrite (with further optimizations
required) to adapt to the ap_process_request_internal() changes.
Optimized so subrequests and redirects now reuse previous section
merges, until we mismatch with the original directory_walk, and
precomputed r->finfo results will cause directory_walk to skip
the most expensive phases of the function. [William Rowe]
*) Remove the Port directive. In it's place, the Listen directive
is now a required directive, which tells Apache what port to
listen on. The ServerName directive has also been extended
to accept an optional port. If the port is specified to the
ServerName, the server will report that port whenever it
reports the port that it is listening on. This change was
made to ease configuration errors that stem from having a Port
directive, and a Listen directive. In that situation, the server
would only listen to the port specified by the Listen command,
which caused a lot of confusion to users. [Ryan Bloom]
*) Added mod_mime_magic, mod_unique_id and mod_vhost_alias to the Win32
build, as loadable modules. [William Rowe]
*) Fix --enable-mods-shared processing. If most is specified,
then all modules that can be compiled as shared modules are.
*) Update the mime.types file to map video/vnd.mpegurl to mxu
and add commonly used audio/x-mpegurl for m3u extensions.
*) Eliminate the depreciated r->content_language, in favor of the array
r->content_languages introduced many years ago. Module authors must
substantially overhaul their modules, so this needs to be upgraded
if the module still relied on backwards-brokeness. [William Rowe]
*) Allow configure help strings to work with autoconf 2.50+ and 2.13.
[Justin Erenkrantz]
*) Rewrite the input filtering mechanisms to consolidate and reorganize
code. In short, core_input_filter does something now and
ap_http_filter is now only concerned with HTTP. [Justin Erenkrantz]
*) Update the Win32 build to re-absorb mod_proxy and family.
[William Rowe]
*) Resolved the build failure on Win32 using MSVC 5.0 (without the
current SDK.) [William Rowe]
*) Some style changes to the code that does ProxyErrorOverride. Fixed
config merge behaviour. [Graham Leggett]
*) Allow support programs to be compiled against a static version
of libapr. This allows the smaller support programs to be
*) Update the mime.types file to the registered media types as
of 2001-09-25, and add mapping for xsl extension [Mark Cox]
*) Fix MaxClients in the Worker MPM, so that it specifies the maximum
number of clients that can connect at the same time, instead of
specifying the maximum number of child processes.
*) Switch proc_pthread AcceptMutex configuration directive to pthread to
be consistent with 1.3. [Justin Erenkrantz]
Justin Erenkrantz
committed
*) Cache apr_explode_localtime() value for 15 seconds.
Justin Erenkrantz
committed
*) Fix mod_include to not return ETag or Last-Modified headers.
*) Fix worker MPM's scoreboard logic. [Aaron Bannert <aaron clove.org>]
Justin Erenkrantz
committed
*) Eliminate the wasteful run-time conversion of method names from strings
to numbers in places where the methods are known at compile time.
Justin Erenkrantz
committed
*) Turn the worker MPM's queue into a LIFO. This may
improve cache-hit performance under some conditions.
*) Switch back to SIGUSR1 for graceful restarts on all platforms that
support it. [Justin Erenkrantz]
*) Cleanup the worker MPM. We no longer re-use transaction
pools. This incurs less overhead than shuffling the pools
around so that they can be re-used. Remove one of the
queue's condition variables. We just redefined the API to
state that you can't try to add more stuff than you allocated
*) Fixed persistent connections when a request contains a body.
[Greg Stein]
*) mod_dav uses a new API to speak to the backend provider for dead
property management. [Greg Stein]
*) Remove the Win32 script-processing exception from mod_cgi, and
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]
*) 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.
*) Make mod_include do lazy evaluation of potentially expensive to
*) Fix logging of bytes sent for HEAD requests. %b and %B should
log either - or 0, before this patch, they were both logging
*) Make mod_include check for BYTE_CHECK_THRESHOLD per bucket rather
*) 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
*) Add -X functionality back. This indicates to all MPMs and any other
part of Apache that it should run in "debug" mode. [Justin Erenkrantz]
*) 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
*) 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
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]
Changes with Apache 2.0.25
*) 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.
*) 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]
*) 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]
*) 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
*) 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]
*) 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]
*) 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]
*) 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
*) Implement CRYPTO_set_locking_callback() in terms of apr_lock
for mod_ssl
*) 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.
*) fix segv in mod_mime if no AddTypes are configured
*) Enable ssl client authentication at SSL_accept time
*) 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]
*) 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