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.
If you're upgrading from Apache 1.2, you may wish to read the upgrade notes.
In addition to a number of bug fixes and internal performance enhancements, Apache 1.3 has the following specific new user features:
Configurationfile, and the CheckSpelling directive must be set to
Configurationhave 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.
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_dirmodule 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.
mod_proxy's outgoing connections larger network buffers, for increased throughput.
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_configcan be compile-time configured to buffer writes.
ap_cpystrn(), a routine which doesn't have to zero-fill the entire result. This has dramatic effects on
See the new performance documentation for more information.
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. Please see the Apache Virtual Host documentation for further details on configuration.
child_initfunction for module API
child_exitfunction for module API
child_exitfunctions are passed a pool whose lifetime is the same as the lifetime of the child (modulo completely fatal events in which apache has no hope of recovering). In contrast, the module
initfunction is passed a pool whose lifetime ends when the parent exits or restarts.
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.
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).
set_last_modifiedsplit into three
set_last_modifiedperformed multiple jobs including the setting of the
ETagheader, and processing conditional requests (such as IMS). These functions have been split into three functions:
meets_conditions. The field
mtimehas been added to
aplog_error. This is still a work in progress.
set_file_slotfor config parsing
set_file_slotroutine provides a standard routine that prepends ServerRoot to non-absolute paths.
pclosesocketfunctions allow for race-condition free socket creation with resource tracking. Similarly
pclosedirprotect directory reading.
spawn_childfunctions which prevents Apache from aggressively trying to kill off the child.
alloc debugging code
ALLOC_DEBUGprovides a rudimentary memory debugger which can be used on live servers with low impact -- it sets all allocated and freed memory bytes to 0xa5. Defining
ALLOC_USE_MALLOCwill cause the alloc code to use
free()for each object. This is far more expensive and should only be used for testing with tools such as Electric Fence and Purify. See
main/alloc.cfor more details.
strncpy"lookalike", with slightly different semantics is much faster than
strncpybecause it doesn't have to zero-fill the entire buffer.
pstrdupon their arguments. This provides for big speedups. There is also some debugging support to ensure code uses them properly. See
src/CHANGESfor more information.
server_rec *to taking a
const char *apapi_get_server_version(). The use of the SERVER_VERSION symbol is deprecated and anti-recommended. In addition, a related datum is now available through the use of the API routine
const char *apapi_get_server_built(), which returns a string representing the time the core server was linked.
configurescript and a corresponding top-level
Makefile.tmplfile. The goal is to provide a GNU Autoconf-style frontend which is capable to both drive the old
src/Configurestuff in batch and additionally installs the package with a GNU-conforming directory layout. Any options from the old configuration scheme are available plus a lot of new options for flexibly customizing Apache.
mod_sowas cleaned up and the
src/Configurescript was extended to setup the totally platform-dependend commands to build DSO files on all major Unix platforms which support the pragmatic
dlopen()interface (Linux, FreeBSD, Solaris, SunOS, IRIX, OSF1, UnixWare). The two popular platforms HP/UX and AIX are not supported because they both use a very special proprietary interface. Second the modules
mod_mimewere unbundled to be able to use them independend from each other. Finally the Makefile generation stuff in
src/Configurewas overhauled to support building shared objects as clean as building static objects. Additionally the new APACI (see below) provides a powerful mechanism for out-of-the-box enabling, building, installing and activating those DSO-based modules.
apxswas created which provides off-source building, installing and activating of those DSO-based modules. It completely hides the platform-dependend DSO-build commands from the user and provides an easy way to build modules outside the Apache source tree. To achieve this APACI installs the Apache C header files together with the