New features with this release, as extensions of the Apache functionality. Because the core code has changed so significantly, there are certain liberties that earlier versions of Apache (and the NCSA daemon) took that recent Apache versions are pickier about - please check the compatibility notes if you have any problems.
In addition to a number of bug fixes and internal performance enhancements, Apache 1.3 has the following specific new user features:
Configuration
file, and the
CheckSpelling
directive must be set to on
.
Configuration
have been replaced with "AddModule" with a slightly different syntax.
For module authors there are some changes designed to make it
easier for users to add their module.
AliasMatch
,
ScriptAliasMatch
, and
RedirectMatch
directives allow for the use of regular expression matching.
Additionally, new
<DirectoryMatch>
,
<LocationMatch>
,
and <FilesMatch>
sections provide a new syntax for regular expression sectioning.
mod_mime_magic
, has been
added. It uses "magic numbers" and other hints from a file's contents
to figure out what the contents are. It then uses this information to
set the file's media type, if it cannot be determined by the file's
extension.
mod_dir
module has been split in two, with
mod_dir handling directory index
files, and mod_autoindex
creating directory listings. Thus allowing folks to remove
the indexing function from critical servers.
writev
(where available)
to issue multiple writes with a single system call. They also avoid
copying memory into buffers as much as possible. The result is
less CPU time spent on transferring large files.
mmap
, which means bytes are only copied from the
disk buffer to the network buffer directly by the kernel. The
program never copies bytes around, which reduces CPU time.
(Only where available/tested.)
mod_log_config
can be compile-time configured to buffer writes.
See the new performance documentation for more information.
UNIQUE_ID
.
NameVirtualHost
directive is used to list ip address:port
pairs on which HTTP/1.1-style virtual hosting occurs. This is
vhosting based on the Host:
header from the client.
Previously this address was implicitly the same as the "main address"
of the machine, and this caused no end of problems for users, and
was not powerful enough.
child_init
function for module APIchild_exit
function for module APIchild_terminate
register_other_child
http_main.h
. This is used in the parent to register
a child for monitoring. The parent will report status to a supplied
callback function. This allows modules to create their own children
which are monitored along with the httpd children.
piped_log
http_log.h
. This API provides the common code for
implementing piped logs. In particular it implements a reliable piped
log on architectures supporting it (i.e. Unix at the moment).
ap_*
set_last_modified
split into threeset_last_modified
performed multiple
jobs including the setting of the Last-Modified
header, the
ETag
header, and processing conditional requests (such as
IMS). These functions have been split into three functions:
set_last_modified
, set_etag
, and
meets_conditions
. The field mtime
has been
added to request_rec
to facilitate
meets_conditions
.
aplog_error
aplog_error
.
This is still a work in progress.
set_file_slot
for config parsingset_file_slot
routine provides a standard routine that
prepends ServerRoot to non-absolute paths.
post_read_request
module APIpsocket
, and popendir
psocket
and pclosesocket
functions allow
for race-condition free socket creation with resource tracking.
Similarly popendir
and pclosedir
protect
directory reading.
is_initial_req
kill_only_once
spawn_child
functions which prevents Apache
from aggressively trying to kill off the child.