# Overview of new features in Apache 2.2

This document describes some of the major changes between the 2.0 and 2.2 versions of the Apache HTTP Server. For new features since version 1.3, see the 2.0 new features document.

# Core Enhancements

Authn/Authz
  The bundled authentication and authorization modules have been refactored. There is a new authentication backend provider scheme which greatly eases the construction of new authentication backends.
Caching
  mod_cache
  , mod_disk_cache, and mod_mem_cache have undergone a lot of changes are now considered production-quality. htcacheclean has been introduced to cleanup mod_disk_cache setups.
Graceful stop
  The prefork, worker and event MPMs now allow httpd to be shutdown gracefully via the `graceful-stop` signal. The GracefulShutdownTimeout directive has been added to specify an optional timeout, after which httpd will terminate regardless of the status of any requests being served.
Proxying
  The new mod_proxy_balancer module provides load balancing services for mod_proxy. The new mod_proxy_ajp module adds support for the `Apache JServ Protocol version 1.3` used by Apache Tomcat.
Regular Expression Library Updated
  Version 5.0 of the Perl Compatible Regular Expression Library (PCRE) is now included.
Smart Filtering
  mod_filter
  introduces dynamic configuration to the output filter chain. It enables filters to be conditionally inserted, based on any Request or Response header or environment variable, and dispenses with the more problematic dependencies and ordering problems in the 2.0 architecture.
Large File Support
  httpd is now built with support for files larger than 2Gb on modern 32-bit Unix systems. Support for handling >2Gb request bodies has also been added.
Event MPM
  The event MPM uses a seperate thread to handle Keep Alive requests and accepting connections. Keep Alive requests have traditionally required httpd to dedicate a worker to handle it. This dedicated worker could not be used again until the Keep Alive timeout was reached.
SQL Database Support
  mod_dbd
  , together with the apr_dbd framework, brings direct SQL support to modules that need it. Supports connection pooling in threaded MPMs.

# Module Enhancements

mod_authnz_ldap
  This module is a port of the 2.0 `mod_auth_ldap` module to the 2.2 `Authn/Authz` framework. New features include using LDAP attribute values and complicated search filters in the Require directive.
mod_info
  Added a new `?config` argument which will show the configuration directives as parsed by Apache, including their file name and line number. The module also shows the order of all request hooks and additional build information, similar to `httpd -V`.
mod_ssl
  Added a support for RFC 2817, which allows connections to upgrade from clear text to TLS encryption.

# Program Enhancements

httpd
  A new command line option `-M` has been added that lists all modules that are loaded based on the current configuration. Unlike the `-l` option, this list includes DSOs loaded via mod_so.

# Module Developer Changes

APR
1.0 API
  Apache 2.2 uses the APR 1.0 API. All deprecated functions and symbols have been removed from `APR` and `APR-Util`. For details, see the APR Website.
Connection Error Logging
  A new function, `ap_log_cerror` has been added to log errors that occure with the client's connection. When logged, the message includes the client IP address.
Test Configuration Hook Added
  A new hook, `test_config` has been added to aid modules that want to execute special code only when the user passes `-t` to httpd.
Set Threaded MPM's Stacksize
  A new directive, `ThreadStackSize` has been added to set the stack size on all threaded MPMs. This is required for some third-party modules on platforms with small default thread stack size.
Protocol handling for output filters
  In the past, every filter has been responsible for ensuring that it generates the correct response headers where it affects them. Filters can now delegate common protocol management to mod_filter, using the `ap_register_output_filter_protocol` or `ap_filter_protocol` calls.
Monitor hook added
  Monitor hook enables modules to run regular/scheduled jobs in the parent (root) process.