Apache HTTP Server Changelog

What's new in Apache HTTP Server 2.4.59

Apr 4, 2024
  • SECURITY: CVE-2024-27316: Apache HTTP Server: HTTP/2 DoS by memory exhaustion on endless continuation frames (cve.mitre.org) HTTP/2 incoming headers exceeding the limit are temporarily buffered in nghttp2 in order to generate an informative HTTP 413 response. If a client does not stop sending headers, this leads to memory exhaustion.
  • SECURITY: CVE-2024-24795: Apache HTTP Server: HTTP Response Splitting in multiple modules (cve.mitre.org) HTTP Response splitting in multiple modules in Apache HTTP Server allows an attacker that can inject malicious response headers into backend applications to cause an HTTP desynchronization attack. Users are recommended to upgrade to version 2.4.59, which fixes this issue.
  • SECURITY: CVE-2023-38709: Apache HTTP Server: HTTP response splitting (cve.mitre.org)
  • Faulty input validation in the core of Apache allows malicious or exploitable backend/content generators to split HTTP responses.
  • This issue affects Apache HTTP Server: through 2.4.58. Credits: Orange Tsai (@orange_8361) from DEVCORE
  • mod_deflate: Fixes and better logging for handling various error and edge cases. [Eric Covener, Yann Ylavic, Joe Orton, Eric Norris <enorris etsy.com>]
  • Add CGIScriptTimeout to mod_cgi. [Eric Covener]
  • mod_xml2enc: Tolerate libxml2 2.12.0 and later. PR 68610 [ttachi <tachihara AT hotmail.com>]
  • mod_slotmem_shm: Use ap_os_is_path_absolute() to make it portable. [Jean-Frederic Clere]
  • mod_ssl: Use OpenSSL-standard functions to assemble CA name lists for SSLCACertificatePath/SSLCADNRequestPath. Names will now be consistently sorted. PR 61574. [Joe Orton]
  • mod_xml2enc: Update check to accept any text/ media type or any XML media type per RFC 7303, avoiding corruption of Microsoft OOXML formats. PR 64339. [Joseph Heenan <joseph.heenan fintechlabs.io>, Joe Orton]
  • mod_http2: v2.0.26 with the following fixes:
  • Fixed `Date` header on requests upgraded from HTTP/1.1 (h2c). Fixes <https://github.com/icing/mod_h2/issues/272>.
  • Fixed small memory leak in h2 header bucket free. Thanks to Michael Kaufmann for finding this and providing the fix.

New in Apache HTTP Server 2.4.58 (Oct 19, 2023)

  • SECURITY: CVE-2023-45802: Apache HTTP Server: HTTP/2 stream memory not reclaimed right away on RST (cve.mitre.org)
  • When a HTTP/2 stream was reset (RST frame) by a client, there was a time window were the request's memory resources were not reclaimed immediately. Instead, de-allocation was deferred to connection close. A client could send new requests and resets, keeping the connection busy and open and causing the memory footprint to keep on growing. On connection close, all resources were reclaimed, but the process might run out of memory before that.
  • This was found by the reporter during testing of CVE-2023-44487 (HTTP/2 Rapid Reset Exploit) with their own test client. During "normal" HTTP/2 use, the probability to hit this bug is very low. The kept memory would not become noticeable before the connection closes or times out.
  • Users are recommended to upgrade to version 2.4.58, which fixes the issue.
  • SECURITY: CVE-2023-43622: Apache HTTP Server: DoS in HTTP/2 with initial windows size 0 (cve.mitre.org). An attacker, opening a HTTP/2 connection with an initial window size of 0, was able to block handling of that connection indefinitely in Apache HTTP Server. This could be used to exhaust worker resources in the server, similar to the well known "slow loris" attack pattern.
  • This has been fixed in version 2.4.58, so that such connection are terminated properly after the configured connection timeout. This issue affects Apache HTTP Server: from 2.4.55 through 2.4.57.
  • SECURITY: CVE-2023-31122: mod_macro buffer over-read (cve.mitre.org). Out-of-bounds Read vulnerability in mod_macro of Apache HTTP Server. This issue affects Apache HTTP Server: through 2.4.57.
  • mod_ssl: Silence info log message "SSL Library Error: error:0A000126: SSL routines::unexpected eof while reading" when using OpenSSL 3 by setting SSL_OP_IGNORE_UNEXPECTED_EOF if available. [Rainer Jung]
  • mod_http2: improved early cleanup of streams.
  • mod_proxy_http2: improved error handling on connection errors while response is already underway.
  • mod_http2: fixed a bug that could lead to a crash in main connection output handling. This occured only when the last request on a HTTP/2 connection had been processed and the session decided to shut down. This could lead to an attempt to send a final GOAWAY while the previous write was still in progress. See PR 66646.

New in Apache HTTP Server 2.4.57 (Apr 6, 2023)

  • Mod_proxy: Check before forwarding that a nocanon path has not been
  • rewritten with spaces during processing. [Yann Ylavic]
  • Mod_proxy: In case that AllowEncodedSlashes is set to NoDecode do not
  • double encode encoded slashes in the URL sent by the reverse proxy to the
  • backend. [Ruediger Pluem]
  • Mod_http2: fixed a crash during connection termination. See PR 66539.
  • [Stefan Eissing]
  • Mod_rewrite: Fix a 2.4.56 regression for substitutions ending
  • in a question mark. PR66547. [Eric Covener]
  • Mod_rewrite: Add "BCTLS" and "BNE" RewriteRule flags. Re-allow encoded
  • characters on redirections without the "NE" flag.
  • [Yann Ylavic, Eric Covener]
  • Mod_proxy: Fix double encoding of the uri-path of the request forwarded
  • to the origin server, when using mapping=encoded|servlet. [Yann Ylavic]
  • Mod_mime: Do not match the extention against possible query string
  • parameters in case ProxyPass was used with the nocanon option.
  • [Ruediger Pluem]

New in Apache HTTP Server 2.4.56 (Mar 7, 2023)

  • SECURITY: CVE-2023-27522: Apache HTTP Server: mod_proxy_uwsgi
  • HTTP response splitting (cve.mitre.org)
  • HTTP Response Smuggling vulnerability in Apache HTTP Server via
  • mod_proxy_uwsgi. This issue affects Apache HTTP Server: from
  • 2.4.30 through 2.4.55.
  • characters in the origin response header can
  • truncate/split the response forwarded to the client.
  • Credits: Dimas Fariski Setyawan Putra (nyxsorcerer)
  • SECURITY: CVE-2023-25690: HTTP request splitting with
  • mod_rewrite and mod_proxy (cve.mitre.org)
  • Some mod_proxy configurations on Apache HTTP Server versions
  • 2.4.0 through 2.4.55 allow a HTTP Request Smuggling attack.
  • Configurations are affected when mod_proxy is enabled along with
  • some form of RewriteRule
  • or ProxyPassMatch in which a non-specific pattern matches
  • some portion of the user-supplied request-target (URL) data and
  • is then reinserted into the proxied request-target using variable
  • substitution. For example, something like:
  • RewriteEngine on
  • RewriteRule "^/here/(.*)" "
  • http://example.com:8080/elsewhere?$1"
  • http://example.com:8080/elsewhere ; [P]
  • ProxyPassReverse /here/ http://example.com:8080/
  • http://example.com:8080/
  • Request splitting/smuggling could result in bypass of access
  • controls in the proxy server, proxying unintended URLs to
  • existing origin servers, and cache poisoning.
  • Credits: Lars Krapf of Adobe
  • rotatelogs: Add -T flag to allow subsequent rotated logfiles to be
  • truncated without the initial logfile being truncated. [Eric Covener]
  • mod_ldap: LDAPConnectionPoolTTL should accept negative values in order to
  • allow connections of any age to be reused. Up to now, a negative value
  • was handled as an error when parsing the configuration file. PR 66421.
  • [nailyk <bzapache nailyk.fr>, Christophe Jaillet]
  • mod_proxy_ajp: Report an error if the AJP backend sends an invalid number
  • of headers. [Ruediger Pluem]
  • mod_md:
  • Enabling ED25519 support and certificate transparency information when
  • building with libressl v3.5.0 and newer. Thanks to Giovanni Bechis.
  • MDChallengeDns01 can now be configured for individual domains.
  • Thanks to Jérôme Billiras (@bilhackmac) for the initial PR.
  • Fixed a bug found by Jérôme Billiras (@bilhackmac) that caused the challenge
  • teardown not being invoked as it should.
  • [Stefan Eissing]
  • mod_http2: client resets of HTTP/2 streams led to unwanted 500 errors
  • reported in access logs and error documents. The processing of the
  • reset was correct, only unneccesary reporting was caused.
  • [Stefan Eissing]
  • mod_proxy_uwsgi: Stricter backend HTTP response parsing/validation.
  • [Yann Ylavic]

New in Apache HTTP Server 2.4.55 (Jan 18, 2023)

  • SECURITY: CVE-2022-37436: Apache HTTP Server: mod_proxy prior to 2.4.55 allows a backend to trigger HTTP response splitting cve.mitre.org)
  • Prior to Apache HTTP Server 2.4.55, a malicious backend can cause the response headers to be truncated early, resulting in some headers being incorporated into the response body. If the
  • later headers have any security purpose, they will not be interpreted by the client. Credits: Dimas Fariski Setyawan Putra (@nyxsorcerer)
  • SECURITY: CVE-2022-36760: Apache HTTP Server: mod_proxy_ajp Possible request smuggling (cve.mitre.org)
  • Inconsistent Interpretation of HTTP Requests ('HTTP Request Smuggling') vulnerability in mod_proxy_ajp of Apache HTTP Server allows an attacker to smuggle requests to the AJP server it
  • forwards requests to. This issue affects Apache HTTP Server Apache HTTP Server 2.4 version 2.4.54 and prior versions. Credits: ZeddYu_Lu from Qi'anxin Research Institute of Legendsec at Qi'anxin Group
  • SECURITY: CVE-2006-20001: mod_dav out of bounds read, or write of zero byte (cve.mitre.org). A carefully crafted If: request header can cause a memory read, or write of a single zero byte, in a pool (heap) memory location beyond the header value sent. This could cause the process to crash. This issue affects Apache HTTP Server 2.4.54 and earlier.
  • mod_dav: Open the lock database read-only when possible.
  • PR 36636 [Wilson Felipe <wfelipe gmail.com>, manu]
  • mod_proxy_http2: apply the standard httpd content type handling to responses from the backend, as other proxy modules do. Fixes PR 66391. Thanks to Jérôme Billiras for providing the patch. [Stefan Eissing]
  • mod_dav: mod_dav overrides dav_fs response on PUT failure. PR 35981 Basant Kumar Kukreja <basant.kukreja sun.com>, Alejandro Alvarez
  • alejandro.alvarez.ayllon cern.ch>]
  • mod_proxy_hcheck: Honor worker timeout settings. [Yann Ylavic]
  • mod_http2: version 2.0.10 of the module, synchronizing changes with the gitgub version. This is a partial rewrite of how connections and streams are handled.
  • an APR pollset and pipes (where supported) are used to monitor the main connection and react to IO for request/response handling. This replaces the stuttered timed waits of earlier versions.
  • H2SerializeHeaders directive still exists, but has no longer an effect. Clients that seemingly misbehave still get less resources allocated, but ongoing requests are no longer disrupted.
  • Fixed an issue since 1.15.24 that "Server" headers in proxied requests were overwritten instead of preserved. [PR by @daum3ns]
  • A regression in v1.15.24 was fixed that could lead to httpd child processes not being terminated on a graceful reload or when reaching MaxConnectionsPerChild. When unprocessed h2 requests were queued at the time, these could stall. See #212.
  • Improved information displayed in 'server-status' for H2 connections when Extended Status is enabled. Now one can see the last request that IO operations happened on and transferred IO stats are updated as well.
  • When reaching server limits, such as MaxRequestsPerChild, the HTTP/2 connection send a GOAWAY frame much too early on new connections, leading to invalid protocol state and a client failing the request. See PR65731 at https://bz.apache.org/bugzilla/show_bug.cgi?id=65731>.
  • The module now initializes the HTTP/2 protocol correctly and allows the client to submit one request before the shutdown via a GOAWAY frame is being announced.
  • scheme pseudo-header values, not matching the connection scheme, are forwarded via absolute uris to the http protocol processing to preserve semantics of the request.
  • Checks on combinations of pseudo-headers values/absence have been added as described in RFC 7540. Fixes #230.
  • A bug that prevented trailers (e.g. HEADER frame at the end) to be generated in certain cases was fixed. See #233 where it prevented gRPC responses to be properly generated.
  • Request and response header values are automatically stripped of leading and trialing space/tab characters. This is equivalent behaviour to what Apache httpd's http/1.1 parser does.
  • The checks for this in nghttp2 v1.50.0+ are disabled.
  • Extensive testing in production done by Alessandro Bianchi (@alexskynet) on the v2.0.x versions for stability. Many thanks!
  • mod_proxy_http2: fixed #235 by no longer forwarding 'Host:' header when request ':authority' is known. Improved test case that did not catch that the previous 'fix' was incorrect.
  • mod_proxy_hcheck: hcmethod now allows for HTTP/1.1 requests using GET11, HEAD11 and/or OPTIONS11. [Jim Jagielski]
  • mod_proxy: The AH03408 warning for a forcibly closed backend connection is now logged at INFO level. [Yann Ylavic]
  • mod_ssl: When dumping the configuration, the existence of certificate/key files is no longer tested. [Joe Orton]
  • mod_authn_core: Add expression support to AuthName and AuthType. [Graham Leggett]
  • mod_ssl: when a proxy connection had handled a request using SSL, an error was logged when "SSLProxyEngine" was only configured in the
  • location/proxy section and not the overall server. The connection continued to work, the error log was in error. Fixed PR66190. [Stefan Eissing]
  • mod_proxy_hcheck: Re-enable workers in standard ERROR state. PR 66302. [Alessandro Cavaliere <alessandro.cavalier7 unibo.it>]
  • mod_proxy_hcheck: Detect AJP/CPING support correctly. PR 66300. [Alessandro Cavaliere <alessandro.cavalier7 unibo.it>]
  • mod_http2: Export mod_http2.h as public header. [Stefan Eissing]
  • mod_md: a new directive `MDStoreLocks` can be used on cluster setups with a shared file system for `MDStoreDir` to order activation of renewed certificates when several cluster nodes are
  • restarted at the same time. Store locks are not enabled by default.
  • Restored curl_easy cleanup behaviour from v2.4.14 and refactored the use of curl_multi for OCSP requests to work with that.
  • Fixes <https://github.com/icing/mod_md/issues/293>.
  • core: Avoid an overflow on large inputs in ap_is_matchexp. PR 66033 [Ruediger Pluem]
  • mod_heartmonitor: Allow "HeartbeatMaxServers 0" to use file based storage instead of slotmem. Needed after setting
  • HeartbeatMaxServers default to the documented value 10 in 2.4.54. PR 66131. [Jérôme Billiras]
  • mod_dav: DAVlockDiscovery option to disable WebDAV lock discovery This is a game changer for performances if client use PROPFIND a lot, PR 66313. [Emmanuel Dreyfus]

New in Apache HTTP Server 2.4.53 (Apr 5, 2022)

  • SECURITY: CVE-2022-23943: mod_sed: Read/write beyond bounds (cve.mitre.org) Out-of-bounds Write vulnerability in mod_sed of Apache HTTP Server allows an attacker to overwrite heap memory with possibly attacker provided data. This issue affects Apache HTTP Server 2.4 version 2.4.52 and prior versions. Credits: Ronald Crane (Zippenhop LLC)
  • ) SECURITY: CVE-2022-22721: core: Possible buffer overflow with very large or unlimited LimitXMLRequestBody (cve.mitre.org) If LimitXMLRequestBody is set to allow request bodies larger than 350MB (defaults to 1M) on 32 bit systems an integer overflow happens which later causes out of bounds writes.This issue affects Apache HTTP Server 2.4.52 and earlier. Credits: Anonymous working with Trend Micro Zero Day Initiative
  • ) SECURITY: CVE-2022-22720: HTTP request smuggling vulnerability in Apache HTTP Server 2.4.52 and earlier (cve.mitre.org) Apache HTTP Server 2.4.52 and earlier fails to close inbound connection when errors are encountered discarding the request body, exposing the server to HTTP Request Smuggling Credits: James Kettle <james.kettle portswigger.net>
  • ) SECURITY: CVE-2022-22719: mod_lua Use of uninitialized value of in r:parsebody (cve.mitre.org) A carefully crafted request body can cause a read to a random memory area which could cause the process to crash. This issue affects Apache HTTP Server 2.4.52 and earlier. Credits: Chamal De Silva
  • ) core: Make sure and check that LimitXMLRequestBody fits in system memory. [Ruediger Pluem, Yann Ylavic]
  • ) core: Simpler connection close logic if discarding the request body fails. [Yann Ylavic, Ruediger Pluem]
  • ) mod_http2: preserve the port number given in a HTTP/1.1 request that was Upgraded to HTTP/2. Fixes PR65881. [Stefan Eissing]
  • ) mod_proxy: Allow for larger worker name. PR 53218. [Yann Ylavic]
  • ) dbm: Split the loading of a dbm driver from the opening of a dbm file. When an attempt to load a dbm driver fails, log clearly which driver triggered the error (not "default"), and what the error was. [Graham Leggett]
  • ) mod_proxy: Use the maxium of front end and backend timeouts instead of the minimum when tunneling requests (websockets, CONNECT requests). Backend timeouts can be configured more selectively (per worker if needed) as front end timeouts and typically the backend timeouts reflect the application requirements better. PR 65886 [Ruediger Pluem]
  • ) ap_regex: Use Thread Local Storage (TLS) to recycle ap_regexec() buffers when an efficient TLS implementation is available. [Yann Ylavic]
  • ) core, mod_info: Add compiled and loaded PCRE versions to version number display. [Rainer Jung]
  • ) mod_md: do not interfere with requests to /.well-known/acme-challenge/ resources if challenge type 'http-01' is not configured for a domain. Fixes <https://github.com/icing/mod_md/issues/279>. [Stefan Eissing]
  • ) mod_dav: Fix regression when gathering properties which could lead to huge memory consumption proportional to the number of resources. [Evgeny Kotkov, Ruediger Pluem]
  • ) Support pcre2 (10.x) library in place of the now end-of-life pcre (8.x) for regular expression evaluation. This depends on locating pcre2-config. [William Rowe, Petr Pisar <ppisar redhat.com>, Rainer Jung]
  • ) Add the ldap function to the expression API, allowing LDAP filters and distinguished names based on expressions to be escaped correctly to guard against LDAP injection. [Graham Leggett]
  • ) mod_md: the status description in MDomain's JSON, exposed in the md-status handler (if configured) did sometimes not carry the correct message when certificates needed renew. [Stefan Eissing]
  • ) mpm_event: Fix a possible listener deadlock on heavy load when restarting and/or reaching MaxConnectionsPerChild. PR 65769. [Yann Ylavic]

New in Apache HTTP Server 2.4.51 (Oct 13, 2021)

  • SECURITY: CVE-2021-42013: Path Traversal and Remote Code Execution in Apache HTTP Server 2.4.49 and 2.4.50 (incomplete fix of CVE-2021-41773) (cve.mitre.org). It was found that the fix for CVE-2021-41773 in Apache HTTP
  • Server 2.4.50 was insufficient. An attacker could use a path traversal attack to map URLs to files outside the directories configured by Alias-like directives. If files outside of these directories are not protected by the usual default configuration "require all denied", these requests can succeed. If CGI scripts are also enabled for these aliased pathes, this could allow for remote code execution. This issue only affects Apache 2.4.49 and Apache 2.4.50 and not
  • earlier versions.
  • core: Add ap_unescape_url_ex() for better decoding control, and deprecate unused AP_NORMALIZE_DROP_PARAMETERS flag.

New in Apache HTTP Server 2.4.50 (Oct 4, 2021)

  • core: AP_NORMALIZE_DECODE_UNRESERVED should normalize the second dot in the uri-path when it's preceded by a dot.
  • mod_md: when MDMessageCmd for a 'challenge-setup:<type>:<dnsname>' fails (!= 0 exit), the renewal process is aborted and an error is reported for the MDomain. This provides scripts that distribute information in a cluster to abort early with bothering an ACME server to validate a dns name that will not work. The common retry logic will make another attempt in the future, as with other failures.
  • Fixed a bug when adding private key specs to an already working MDomain
  • mod_proxy: Handle UDS URIs with empty hostname ("unix:///...") as if they had no hostname ("unix:/...").
  • mod_md: fixed a bug in handling multiple parallel OCSP requests. These could run into an assertion which terminated (and restarted) the child process where the task was running. Eventually, all OCSP responses were collected, but not in the way that things are supposed to work.
  • The bug was possibly triggered when more than one OCSP status needed updating at the same time. For example for several renewed certificates after a server reload.
  • mod_rewrite: Fix UDS ("unix:") scheme for [P] rules. PR 57691 + 65590. Janne Peltonen <janne.peltonen sange.fi>]
  • event mpm: Correctly count active child processes in parent process if child process dies due to MaxConnectionsPerChild.
  • mod_http2: when a server is restarted gracefully, any idle h2 worker threads are shut down immediately. Also, change OpenSSL API use for deprecations in OpenSSL 3.0.
  • Adds all other, never proposed code changes to make a clean sync of http2 sources.
  • mod_dav: Correctly handle errors returned by dav providers on REPORT requests.
  • core: do not install core input/output filters on secondary connections.
  • core: Add ap_pre_connection() as a wrapper to ap_run_pre_connection() and use it to prevent that failures in running the pre_connection hook cause crashes afterwards.
  • mod_speling: Add CheckBasenameMatch PR 44221

New in Apache HTTP Server 2.4.49 (Sep 16, 2021)

  • coding: utf-8 -*-
  • Changes with Apache 2.4.49 SECURITY: CVE-2021-40438 (cve.mitre.org)
  • mod_proxy: Server Side Request Forgery (SSRF) vulnerabilty [Yann Ylavic]
  • core: ap_escape_quotes buffer overflow
  • mod_proxy_uwsgi: Out of bound read vulnerability [Yann Ylavic]
  • SECURITY: CVE-2021-34798 (cve.mitre.org)
  • ore: null pointer dereference on malformed request
  • SECURITY: CVE-2021-33193 (cve.mitre.org)
  • mod_http2: Request splitting vulnerability with mod_proxy [Stefan Eissing]
  • core/mod_proxy/mod_ssl:
  • Adding `outgoing` flag to conn_rec, indicating a connection is initiated by the server to somewhere, in contrast to incoming connections from clients.
  • Adding 'ap_ssl_bind_outgoing()` function that marks a connection as outgoing and is used by mod_proxy instead of the previous optional function `ssl_engine_set`. This enables other SSL module to secure proxy connections.
  • The optional functions `ssl_engine_set`, `ssl_engine_disable` and ssl_proxy_enable` are now provided by the core to have backward compatibility with non-httpd modules that might use them. mod_ssl itself no longer registers these functions, but keeps them in its header for backward compatibility.
  • The core provided optional function wrap any registered function like it was done for `ssl_is_ssl`. mod_ssl: Support logging private key material for use with wireshark via log file given by SSLKEYLOGFILE environment variable. Requires OpenSSL 1.1.1. PR 63391. [Joe Orton]
  • mod_proxy: Do not canonicalize the proxied URL when both "nocanon" and "ProxyPassInterpolateEnv On" are configured. PR 65549.
  • Joel Self <joelself gmail.com>]
  • mpm_event: Fix children processes possibly not stopped on graceful restart. PR 63169. [Joel Self <joelself gmail.com>] od_proxy: Fix a potential infinite loop when tunneling Upgrade(d)
  • protocols from mod_proxy_http, and a timeout triggering falsely when
  • using mod_proxy_wstunnel, mod_proxy_connect or mod_proxy_http withupgrade= setting. PRs 65521 and 65519. [Yann Ylavic]
  • mod_unique_id: Reduce the time window where duplicates may be generated
  • mpm_prefork: Block signals for child_init hooks to prevent potential threads created from there to catch MPM's signals.
  • Revert "mod_unique_id: Fix potential duplicated ID generation under heavy load.
  • PR 65159" added in 2.4.47. This causes issue on Windows.
  • mod_proxy_uwsgi: Fix PATH_INFO setting for generic worker. [
  • mod_md: Certificate/keys pairs are verified as matching before a renewal is accepted as successful or a staged renewal is replacing the existing certificates.
  • This avoid potential mess ups in the md store file system to render the active certificates non-working. [@mkauf]
  • mod_proxy: Faster unix socket path parsing in the "proxy:" URL.
  • mod_ssl: tighten the handling of ALPN for outgoing (proxy) connections. If ALPN protocols are provided and sent to the remote server, the received protocol selected is inspected and checked for a match. Without match, the peer handshake fails.
  • An exception is the proposal of "http/1.1" where it is accepted if the remote server did not answer ALPN with a selected protocol. This accomodates for hosts that do not observe/support ALPN and speak http/1.x be default.
  • mod_proxy: Fix possible reuse/merging of Proxy(Pass)Match worker instances with others when their URLs contain a '$' substitution. PR 65419 + 65429.
  • mod_dav: Add method_precondition hook. WebDAV extensions define conditions that must exist before a WebDAV method can be executed. This hook allows a WebDAV extension to verify these preconditions.
  • Add hooks deliver_report and gather_reports to mod_dav.h. Allows other modules apart from versioning implementations to handle the REPORT method.
  • Add dav_get_provider(), dav_open_lockdb(), dav_close_lockdb() and dav_get_resource() to mod_dav.h. [Graham Leggett]
  • core: fix ap_escape_quotes substitution logic. [Eric Covener]
  • Easy patches: synch 2.4.x and trunk
  • mod_auth_basic: Use ap_cstr_casecmp instead of strcasecmp.
  • mod_ldap: log and abort locking errors.
  • mod_ldap: style fix for r1831165
  • mod_ldap: build break fix for r1831165
  • mod_deflate: Avoid hard-coded "%ld" format strings in mod_deflate's logging statements
  • mod_deflate: Use apr_uint64_t instead of uint64_t (follow up to r1849590)
  • mod_forensic: Follow up to r1856490: missing one mod_log_forensic test_char_table case.
  • mod_rewrite: Save a few cycles.
  • mod_request: Fix a comment (missing '_' in 'keep_body') and some style issues
  • core: remove extra whitespace in HTTP_NOT_IMPLEMENTED
  • core/mpm: add hook 'child_stopping` that gets called when the MPM is stopping a child process. The additional `graceful` parameter allows registered hooks to free resources early during a graceful shutdown.
  • mod_proxy: Fix icomplete initialization of BalancerMember(s) from the balancer-manager, which can lead to a crash.
  • mpm_event: Fix graceful stop/restart of children processes if connections are in lingering close for too long. [Yann Ylavic]
  • mod_md: fixed a potential null pointer dereference if ACME/OCSP server returned 2xx responses without content type. Reported by chuangwen.
  • mod_md:
  • Domain names in `<MDomain ...>` can now appear in quoted form.
  • Fixed a failure in ACME challenge selection that aborted further searches when the tls-alpn-01 method did not seem to be suitable.
  • Changed the tls-alpn-01 setup to only become unsuitable when none of the dns names showed support for a configured 'Protocols ... acme-tls/1'. This
  • allows use of tls-alpn-01 for dns names that are not mapped to a VirtualHost. Stefan Eissing]
  • Add CPING to health check logic. [Jean-Frederic Clere]
  • core: Split ap_create_request() from ap_read_request().
  • core, h2: common ap_parse_request_line() and ap_check_request_header()
  • code. [Yann Ylavic]
  • core: Add StrictHostCheck to allow unconfigured hostnames to be
  • rejected. [Eric Covener]
  • htcacheclean: Improve help messages.

New in Apache HTTP Server 2.4.48 (Jun 2, 2021)

  • SECURITY: CVE-2021-31618 (cve.mitre.org)
  • mod_http2: Fix a potential NULL pointer dereference
  • mod_proxy_wstunnel: Add ProxyWebsocketFallbackToProxyHttp to opt-out the fallback to mod_proxy_http for WebSocket upgrade and tunneling.
  • mod_proxy: Fix flushing of THRESHOLD_MIN_WRITE data while tunneling.
  • core: Fix a regression that stripped the ETag header from 304 responses.
  • core: Adding SSL related inquiry functions to the server API.
  • These function are always available, even when no module providing SSL is loaded. They provide their own "shadowing" implementation for the optional functions of similar name that mod_ssl and impersonators of mod_ssl provide. This enables loading of several SSL providing modules when all but one of them registers itself into the new hooks. Two old-style SSL modules will not work, as they replace the others optional functions with their own.
  • Modules using the old-style optional functions will continue to work as core supplies its own versions of those.
  • The following has been added so far:
  • ap_ssl_conn_is_ssl() to query if a connection is using SSL.
  • ap_ssl_var_lookup() to query SSL related variables for a server/connection/request.
  • Hooks for 'ssl_conn_is_ssl' and 'ssl_var_lookup' where modules providing SSL can install their own value supplying functions.
  • ap_ssl_add_cert_files() to enable other modules like mod_md to provide certificate and keys for an SSL module like mod_ssl.
  • ap_ssl_add_fallback_cert_files() to enable other modules like mod_md to provide a fallback certificate in case no 'proper' certificate is available for an SSL module like mod_ssl.
  • ap_ssl_answer_challenge() to enable other modules like mod_md to provide a certificate as used in the RFC 8555 'tls-alpn-01' challenge for the ACME protocol for an SSL module like mod_ssl. The function and its hook provide PEM encoded data instead of file names.
  • Hooks for 'ssl_add_cert_files', 'ssl_add_fallback_cert_files' and ssl_answer_challenge' where modules like mod_md can provide providers to the above mentioned functions. These functions reside in the new 'http_ssl.h' header file.
  • core/mod_ssl/mod_md: adding OCSP response provisioning as core feature. This allows modules to access and provide OCSP response data without being tied of each other. The data is exchanged in standard, portable formats (PEM encoded certificates and DER encoded responses), so that the actual SSL/crypto implementations used by the modules are independant of each other. Registration and retrieval happen in the context of a server (server_rec) which modules may use to decide if they are configured for this or not. The area of changes:
  • core: defines 2 functions in include/http_ssl.h, so that modules may register a certificate, together with its issuer certificate for OCSP response provisioning and ask for current response data (DER bytes) later. Also, 2 hooks are defined that allow modules to implement this OCSP provisioning.
  • mod_ssl uses the new functions, in addition to what it did already, to register its certificates this way. If no one is interested in providing OCSP, it falls back to its own (if configured) stapling implementation.
  • mod_md registers itself at the core hooks for OCSP provisioning. Depending on configuration, it will accept registrations of its own certificates only, all certificates or none.
  • mod_md: v2.4.0 with improvements and bugfixes:
  • MDPrivateKeys allows the specification of several types. Beside "RSA" plus optional key lengths elliptic curves can be configured. This means you can have multiple certificates for a Managed Domain with different key types. With ```MDPrivateKeys secp384r1 rsa2048``` you get one ECDSA and one RSA certificate and all modern client will use the shorter ECDSA, while older client will get the RSA certificate Many thanks to @tlhackque who pushed and helped on this
  • Support added for MDomains consisting of a wildcard. Configuring MDomain *.host.net``` will match all virtual hosts matching that pattern and obtain one certificate for it (assuming you have 'dns-01' challenge support configured). Addresses #239
  • Removed support for ACMEv1 servers. The only known installation used to be Let's Encrypt which has disabled that version more than a year ago for new accounts
  • Andreas Ulm (<https://github.com/root360-AndreasUlm>) implemented the renewing``` call to ```MDMessageCmd``` that can deny a certificate renewal attempt. This is useful in clustered installations, as discussed in #233)
  • New event ```challenge-setup:<type>:<domain>```, triggered when the challenge data for a domain has been created. This is invoked before the ACME server is told to check for it. The type is one of the ACME challenge types. This is invoked for every DNS name in a MDomain
  • The max delay for retries has been raised to daily (this is like all retries jittered somewhat to avoid repeats at fixed time of day)
  • Certain error codes reported by the ACME server that indicate a problem with the configured data now immediately switch to daily retries. For example: if the ACME server rejects a contact email or a domain name frequent retries will most likely not solve the problem. But daily retries still make sense as there might be an error at the server and un-supervised certificate renewal is the goal. Refs #222
  • Test case and work around for domain names > 64 octets. Fixes #227
  • When the first DNS name of an MD is longer than 63 octets, the certificate request will not contain a CN field, but leave it up to the CA to choose one
  • Currently, Lets Encrypt looks for a shorter name in the SAN list given and fails the request if none is found. But it is really up to the CA (and what browsers/libs accept here) and may change over the years. That is why the decision is best made at the CA
  • Retry delays now have a random +/-[0-50]% modification applied to let retries from several servers spread out more, should they have been restarted at the same time of day
  • Fixed several places where the 'badNonce' return code from an ACME server was not handled correctly. The test server 'pebble' simulates this behaviour by default and helps nicely in verifying this behaviour. Thanks, pebble
  • Set the default `MDActivationDelay` to 0. This was confusing to users that new certificates were deemed not usably before a day of delay. When clocks are correct, using a new certificate right away should not pose a problem
  • When handling ACME authorization resources, the module no longer requires the server to return a "Location" header, as was necessary in ACMEv1. Fixes #216
  • Fixed a theoretical uninitialized read when testing for JSON error responses from the ACME CA. Reported at <https://bz.apache.org/bugzilla/show_bug.cgi?id=64297>
  • ACME problem reports from CAs that include parameters in the Content-Type header are handled correctly. (Previously, the problem text would not be reported and retries could exceed CA limits.)
  • Account Update transactions to V2 CAs now use the correct POST-AS-GET method. Previously, an empty JSON object was sent - which apparently LE accepted but others reject

New in Apache HTTP Server 2.4.46 (Aug 7, 2020)

  • SECURITY: CVE-2020-11984 (cve.mitre.org) mod_proxy_uwsgi: Malicious request may result in information disclosure or RCE of existing file on the server running under a malicious process environment. [Yann Ylavic]

New in Apache HTTP Server 2.4.39 (Apr 2, 2019)

  • *) mod_proxy/ssl: Cleanup per-request SSL configuration anytime a backend
  • connection is recycled/reused to avoid a possible crash with some SSLProxy
  • configurations in <Location> or <Proxy> context. PR 63256. [Yann Ylavic]
  • *) mod_ssl: Correctly restore SSL verify state after TLSv1.3 PHA failure.
  • [Michael Kaufmann <mail michael-kaufmann.ch>]
  • *) mod_log_config: Support %{c}h for conn-hostname, %h for useragent_host
  • PR 55348
  • *) mod_socache_redis: Support for Redis as socache storage provider.
  • *) core: new configuration option 'MergeSlashes on|off' that controls handling of
  • multiple, consecutive slash ('/') characters in the path component of the request URL.
  • [Eric Covener]
  • *) mod_http2: when SSL renegotiation is inhibited and a 403 ErrorDocument is
  • in play, the proper HTTP/2 stream reset did not trigger with H2_ERR_HTTP_1_1_REQUIRED.
  • Fixed. [Michael Kaufmann]
  • *) mod_http2: new configuration directive: `H2Padding numbits` to control
  • padding of HTTP/2 payload frames. 'numbits' is a number from 0-8,
  • controlling the range of padding bytes added to a frame. The actual number
  • added is chosen randomly per frame. This applies to HEADERS, DATA and PUSH_PROMISE
  • frames equally. The default continues to be 0, e.g. no padding. [Stefan Eissing]
  • *) mod_http2: ripping out all the h2_req_engine internal features now that mod_proxy_http2
  • has no more need for it. Optional functions are still declared but no longer implemented.
  • While previous mod_proxy_http2 will work with this, it is recommeneded to run the matching
  • versions of both modules. [Stefan Eissing]
  • *) mod_proxy_http2: changed mod_proxy_http2 implementation and fixed several bugs which
  • resolve PR63170. The proxy module does now a single h2 request on the (reused)
  • connection and returns. [Stefan Eissing]
  • *) mod_http2/mod_proxy_http2: proxy_http2 checks correct master connection aborted status
  • to trigger immediate shutdown of backend connections. This is now always signalled
  • by mod_http2 when the the session is being released.
  • proxy_http2 now only sends a PING frame to the backend when there is not already one
  • in flight. [Stefan Eissing]
  • *) mod_proxy_http2: fixed an issue where a proxy_http2 handler entered an infinite
  • loop when encountering certain errors on the backend connection.
  • See <https://bz.apache.org/bugzilla/show_bug.cgi?id=63170>. [Stefan Eissing]
  • *) mod_http2: Configuration directives H2Push and H2Upgrade can now be specified per
  • Location/Directory, e.g. disabling PUSH for a specific set of resources. [Stefan Eissing]
  • *) mod_http2: HEAD requests to some module such as mod_cgid caused the stream to
  • terminate improperly and cause a HTTP/2 PROTOCOL_ERROR.
  • Fixes <https://github.com/icing/mod_h2/issues/167>. [Michael Kaufmann]
  • *) http: Fix possible empty response with mod_ratelimit for HEAD requests.
  • PR 63192. [Yann Ylavic]
  • *) mod_cache_socache: Avoid reallocations and be safe with outgoing data
  • lifetime. [Yann Ylavic]
  • *) MPMs unix: bind the bucket number of each child to its slot number, for a
  • more efficient per bucket maintenance. [Yann Ylavic]
  • *) mod_auth_digest: Fix a race condition. Authentication with valid
  • credentials could be refused in case of concurrent accesses from
  • different users. PR 63124. [Simon Kappel <simon.kappel axis.com>]
  • *) mod_http2: enable re-use of slave connections again. Fixed slave connection
  • keepalives counter. [Stefan Eissing]
  • *) mod_reqtimeout: Allow to configure (TLS-)handshake timeouts.
  • PR 61310. [Yann Ylavic]
  • *) mod_proxy_wstunnel: Fix websocket proxy over UDS.
  • PR 62932 <pavel dcmsys.com>
  • *) mod_ssl: Don't unset FIPS mode on restart unless it's forced by
  • configuration (SSLFIPS on) and not active by default in OpenSSL.
  • PR 63136. [Yann Ylavic]
  • [Apache 2.3.0-dev includes those bug fixes and changes with the
  • Apache 2.2.xx tree as documented, and except as noted, below.]

New in Apache HTTP Server 2.4.38 (Jan 22, 2019)

  • mod_ssl: Clear retry flag before aborting client-initiated renegotiation.PR 63052 [Joe Orton]
  • mod_negotiation: Treat LanguagePriority as case-insensitive to match AddLanguage behavior and HTTP specification. PR 39730 [Christophe Jaillet]
  • mod_md: incorrect behaviour when synchronizing ongoing ACME challenges have been fixed. [Michael Kaufmann, Stefan Eissing]
  • mod_setenvif: We can have expressions that become true if a regex pattern in the expression does NOT match. In this case val is NULL and we should just set the value for the environment variable like in the pattern case. [Ruediger Pluem]
  • mod_session: Always decode session attributes early. [Hank Ibell]
  • core: Incorrect values for environment variables are substituted when multiple environment variables are specified in a directive. [Hank Ibell]
  • mod_rewrite: Only create the global mutex used by "RewriteMap prg:" when this type of map is present in the configuration. PR62311. Hank Ibell <hwibell gmail.com>]
  • mod_dav: Fix invalid Location header when a resource is created by passing an absolute URI on the request line [Jim Jagielski]
  • mod_session_cookie: avoid duplicate Set-Cookie header in the response.[Emmanuel Dreyfus <[email protected]>, Luca Toscano]
  • mod_ssl: clear *SSL errors before loading certificates and checking afterwards. Otherwise errors are reported when other SSL using modules are in play. Fixes PR 62880. [Michael Kaufmann]
  • mod_ssl: Fix the error code returned in an error path of 'ssl_io_filter_handshake('. This messes-up error handling performed in 'ssl_io_filter_error(' [Yann Ylavic]
  • mod_ssl: Fix $HTTPS definition for "SSLEngine optional" case, and fix authz provider so "Require ssl" works correctly in HTTP/2.
  • PR 61519, 62654. [Joe Orton, Stefan Eissing]
  • mod_proxy: If ProxyPassReverse is used for reverse mapping of relative redirects, subsequent ProxyPassReverse statements, whether they are
  • relative or absolute, may fail. PR 60408. [Peter Haworth <pmh1wheel gmail.com>]
  • mod_lua: Now marked as a stable module [https://s.apache.org/Xnh1]

New in Apache HTTP Server 2.4.35 (Sep 23, 2018)

  • http: Enforce consistently no response body with both 204 and 304 statuses. [Yann Ylavic]
  • mod_status: Cumulate CPU time of exited child processes in the "cu" and "cs" values. Add CPU time of the parent process to the "c" and "s" values. [Rainer Jung]
  • mod_proxy: Improve the balancer member data shown in mod_status when "ProxyStatus" is "On": add "busy" count and show byte counts in auto mode always in units of kilobytes. [Rainer Jung]
  • mod_status: Add cumulated response duration time in milliseconds. [Rainer Jung]
  • mod_status: Complete the data shown for async MPMs in "auto" mode. Added number of processes, number of stopping processes and number of busy and idle workers. [Rainer Jung]
  • mod_ratelimit: Don't interfere with "chunked" encoding, fixing regression introduced in 2.4.34. PR 62568. [Yann Ylavic]
  • mod_proxy: Remove load order and link dependency between mod_lbmethod_* modules and mod_proxy. PR 62557. [Ruediger Pluem, William Rowe]
  • Allow the argument to <IfFile>, <IfDefine>, <IfSection>, <IfDirective>, and <IfModule> to be quoted. This is primarily for the benefit of <IfFile>. [Eric Covener]
  • mod_watchdog: Correct some log messages. [Rainer Jung]
  • mod_md: When the last domain name from an MD is moved to another one, that now empty MD gets moved to the store archive. PR 62572. [Stefan Eissing]
  • mod_ssl: Fix merging of SSLOCSPOverrideResponder. [Jeff Trawick, [Frank Meier <frank meier ergon.ch>]
  • mod_proxy_balancer: Restore compatibility with APR 1.4. [Joe Orton]
  • [Apache 2.3.0-dev includes those bug fixes and changes with the Apache 2.2.xx tree as documented, and except as noted, below.]

New in Apache HTTP Server 2.4.34 (Jul 15, 2018)

  • Introduce zh-cn and zh-tw (simplified and traditional Chinese) error document translations. [CodeingBoy, popcorner]
  • event: avoid possible race conditions with modules on the child pool.[Stefan Fritsch]
  • mod_proxy: Fix a corner case where the ProxyPassReverseCookieDomain or ProxyPassReverseCookiePath directive could fail to update correctly'domain=' or 'path=' in the 'Set-Cookie' header. PR 61560. [Christophe Jaillet]
  • mod_ratelimit: fix behavior when proxing content. PR 62362. [Luca Toscano, Yann Ylavic]
  • core: Re-allow '_' (underscore) in hostnames.[Eric Covener]
  • mod_authz_core: If several parameters are used in a AuthzProviderAlias directive, if these parameters are not enclosed in quotation mark, only the first one is handled. The other ones are silently ignored. Add a message to warn about such a spurious configuration. PR 62469 [Hank Ibell <hwibell gmail.com>, Christophe Jaillet]
  • mod_md: improvements and bugfixes:
  • MDNotifyCmd now takes additional parameter that are passed on to the called command.
  • ACME challenges have better checks for interference with other modules
  • ACME challenges are only handled for domains managed by the module, allowing
  • other ACME clients to operate for other domains in the server.
  • better libressl integration
  • mod_proxy_wstunnel: Add default schema ports for 'ws' and 'wss'. PR 62480. [Lubos Uhliarik <luhliari redhat.com>}
  • logging: Some early logging-related startup messages could be lost when using syslog for the global ErrorLog. [Eric Covener]
  • mod_cache: Handle case of an invalid Expires header value RFC compliant like the case of an Expires time in the past: allow to overwrite the non-caching decision using CacheStoreExpired and respect Cache-Control "max-age" and "s-maxage". [Rainer Jung]
  • mod_xml2enc: Fix forwarding of error metadata/responses. PR 62180. [Micha Lenk <micha lenk.info>, Yann Ylavic]
  • mod_proxy_http: Fix response header thrown away after the previous one was considered too large and truncated. PR 62196. [Yann Ylavic]
  • core: Add and handle AP_GETLINE_NOSPC_EOL flag for ap_getline() family of functions to consume the end of line when the buffer is exhausted. PR 62198. [Yann Ylavic]
  • mod_proxy_http: Add new worker parameter 'responsefieldsize' to allow maximum HTTP response header size to be increased past 8192 bytes. PR 62199. [Hank Ibell <hwibell gmail.com>]
  • mod_ssl: Extend SSLOCSPEnable with mode 'leaf' that only checks the leaf of a certificate chain. PR62112.[Ricardo Martin Camarero <rickyepoderi yahoo.es>]
  • http: Fix small memory leak per request when handling persistent connections. [Ruediger Pluem, Joe Orton]
  • mod_proxy_html: Fix variable interpolation and memory allocation failure in ProxyHTMLURLMap. [Ewald Dieterich <ewald mailbox.org>]
  • mod_remoteip: Fix RemoteIP{Trusted,Internal}ProxyList loading broken by 2.4.30. PR 62220. [Chritophe Jaillet, Yann Ylavic]
  • mod_remoteip: When overriding the useragent address from X-Forwarded-For, zero out what had been initialized as the connection-level port. PR59931. [Hank Ibell <hwibell gmail.com>]
  • core: In ONE_PROCESS/debug mode, cleanup everything when exiting. [Yann Ylavic]
  • mod_proxy_balancer: Add hot spare member type and corresponding flag (R). Hot spare members are used as drop-in replacements for unusable workers in the same load balancer set. This differs from hot standbys which are only used when all workers in a set are unusable. PR 61140. [Jim Riggs]
  • suexec: Add --enable-suexec-capabilites support on Linux, to use setuid/setgid capability bits rather than a setuid root binary. [Joe Orton]
  • suexec: Add support for logging to syslog as an alternative to logging to a file; use --without-suexec-logfile --with-suexec-syslog. [Joe Orton]
  • mod_ssl: Restore 2.4.29 behaviour in SSL vhost merging/enabling which broke some rare but previously-working configs. [Joe Orton]
  • core, log: improve sanity checks for the ErrorLog's syslog config, and explicitly allow only lowercase 'syslog' settings. PR 62102 [Luca Toscano, Jim Riggs, Christophe Jaillet]
  • mod_http2: accurate reporting of h2 data input/output per request via mod_logio. Fixes an issue where output sizes where counted n-times on reused slave connections. [Stefan Eissing] See github issue: https://github.com/icing/mod_h2/issues/158
  • mod_http2: Fix unnecessary timeout waits in case streams are aborted [Stefan Eissing]
  • mod_http2: restoring the v1.10.16 keepalive timeout behaviour of mod_http2.[Stefan Eissing]
  • mod_proxy: Do not restrict the maximum pool size for backend connections any longer by the maximum number of threads per process and use a better default if mod_http2 is loaded. [Yann Ylavic, Ruediger Pluem, Stefan Eissing, Gregg Smith]
  • mod_slotmem_shm: Add generation number to shm filename to fix races with graceful restarts. PRs 62044 and 62308. [Jim Jagielski, Yann Ylavic]
  • core: Preserve the original HTTP request method in the '%<m' LogFormat when an path-based ErrorDocument is used. PR 62186. [Micha Lenk <micha lenk.info>]
  • mod_remoteip: make proxy-protocol work on slave connections, e.g. in
  • HTTP/2 requests. [Stefan Eissing] See also https://github.com/roadrunner2/mod-proxy-protocol/issues/6
  • mod_ssl: Fix merging of proxy SSL context outside <Proxy> sections, regression introduced in 2.4.30. PR 62232. [Rainer Jung, Yann Ylavic]
  • mod_md: Fix compilation with OpenSSL before version 1.0.2. [Rainer Jung]
  • mod_dumpio: do nothing below log level TRACE7. [Yann Ylavic]
  • mod_remoteip: Restore compatibility with APR 1.4 (apr_sockaddr_is_wildcard).
  • [Eric Covener]
  • core: On ECBDIC platforms, some errors related to oversized headers
  • may be misreported or be logged as ASCII escapes. PR 62200
  • [Hank Ibell <hwibell gmail.com>]
  • mod_ssl: Fix cmake-based build. PR 62266. [Rainer Jung]
  • core: Add <IfFile>, <IfDirective> and <IfSection> conditional
  • section containers. [Eric Covener, Joe Orton]

New in Apache HTTP Server 2.4.32 (Mar 15, 2018)

  • Mod_access_compat: Fail if a comment is found in an Allow or Deny Directive. [Jan Kaluza]
  • Mod_authz_host: Ignore comments after "Require host", logging a Warning, or logging an error if the line is otherwise empty.
  • [Jan Kaluza, Joe Orton]
  • Rotatelogs: Fix expansion of %Z in localtime (-l) mode, and fix Y2K38 bug. [Joe Orton]
  • Mod_ssl: Support SSL DN raw variable extraction without conversion To UTF-8, using _RAW suffix on variable names. [Joe Orton]
  • Ab: Fix https:// connection failures (regression in 2.4.30); fix Crash generating CSV output for large -n. [Joe Orton, Jan Kaluza]

New in Apache HTTP Server 2.4.29 (Oct 23, 2017)

  • mod_unique_id: Use output of the PRNG rather than IP address and pid, avoiding sleep() call and possible DNS issues at startup, plus improving randomness for IPv6-only hosts.
  • mod_rewrite, core: Avoid the 'Vary: Host' response header when HTTP_HOST is used in a condition that evaluates to true. PR 58231
  • mod_http2: v0.10.12, removed optimization for mutex handling in bucket beams that could lead to assertion failure in edge cases.
  • mod_proxy: Fix regression for non decimal loadfactor parameter introduced in 2.4.28.
  • mod_authz_dbd: fix a segmentation fault if AuthzDBDQuery is not set. PR 61546.
  • mod_rewrite: Add support for starting External Rewriting Programs as non-root user on UNIX systems by specifying username and group name as third argument of RewriteMap directive.
  • core: Rewrite the Content-Length filter to avoid excessive memory consumption. Chunked responses will be generated in more cases than in previous releases. PR 61222.
  • mod_ssl: Fix SessionTicket callback return value, which does seem to matter with OpenSSL 1.1.

New in Apache HTTP Server 2.4.28 (Oct 5, 2017)

  • SECURITY: CVE-2017-9798 (cve.mitre.org). Corrupted or freed memory access. <Limit[Except]> must now be used in the main configuration file (httpd.conf) to register HTTP methods before the htaccess files.
  • event: Avoid possible blocking in the listener thread when shutting down connections. PR 60956.
  • mod_speling: Don't embed referer data in a link in error page. PR 38923
  • htdigest: prevent a buffer overflow when a string exceeds the allowed max length in a password file.
  • mod_proxy: loadfactor parameter can now be a decimal number (eg: 1.25).
  • mod_proxy_wstunnel: Allow upgrade to any protocol dynamically. PR 61142.
  • mod_watchdog/mod_proxy_hcheck: Time intervals can now be spefified down to the millisecond. Supports 'mi' (minute), 'ms' (millisecond), s' (second) and 'hr' (hour!) time suffixes.
  • mod_http2: Fix for stalling when more than 32KB are written to a suspended stream.
  • build: allow configuration without APR sources.
  • mod_ssl, ab: Fix compatibility with LibreSSL. PR 61184.
  • Bernard Spil <brnrd freebsd.org>, Michael Schlenker <msc contact.de>
  • core/log: Support use of optional "tag" in syslog entries. PR 60525.
  • mod_proxy: Fix ProxyAddHeaders merging.
  • core: Disallow multiple Listen on the same IP:port when listener buckets are configured (ListenCoresBucketsRatio > 0), consistently with the single bucket case (default), thus avoiding the leak of the corresponding socket descriptors on graceful restart.
  • event: Avoid listener periodic wake ups by using the pollset wake-ability when available. PR 57399. [Yann Ylavic, Luca Toscano]
  • mod_proxy_wstunnel: Fix detection of unresponded request which could have led to spurious HTTP 502 error messages sent on upgrade connections. PR 61283.

New in Apache HTTP Server 2.4.27 (Jul 24, 2017)

  • COMPATIBILITY: mod_lua: Remove the undocumented exported 'apr_table' global variable when using Lua 5.2 or later. This was exported as a side effect from luaL_register, which is no longer supported as of Lua 5.2 which deprecates pollution of the global namespace. [Rainer Jung]
  • COMPATIBILITY: mod_http2: Disable and give warning when using Prefork.The server will continue to run, but HTTP/2 will no longer be negotiated.[Stefan Eissing]
  • COMPATIBILITY: mod_proxy_fcgi: Revert to 2.4.20 FCGI behavior for the default ProxyFCGIBackendType, fixing a regression with PHP-FPM. PR 61202. [Jacob Champion, Jim Jagielski]
  • mod_lua: Improve compatibility with Lua 5.1, 5.2 and 5.3. PR58188, PR60831, PR61245. [Rainer Jung]
  • mod_http2: Simplify ready queue, less memory and better performance. Update mod_http2 version to 1.10.7. [Stefan Eissing]
  • Allow single-char field names inadvertently disallowed in 2.4.25. PR 61220. [Yann Ylavic]
  • htpasswd / htdigest: Do not apply the strict permissions of the temporary passwd file to a possibly existing passwd file. PR 61240. [Ruediger Pluem]
  • core: Avoid duplicate HEAD in Allow header. This is a regression in 2.4.24 (unreleased), 2.4.25 and 2.4.26.PR 61207. [Christophe Jaillet]

New in Apache HTTP Server 2.4.26 (Jun 20, 2017)

  • HTTP/2 support no longer tagged as "experimental" but is instead considered fully production ready.
  • mod_http2: Fix for possible CPU busy loop introduced in v1.10.3 where a stream may keep the session in continuous check for state changes that never happen.
  • mod_mime: Fix error checking for quoted pairs.
  • mod_proxy_wstunnel: Add "upgrade" parameter to allow upgrade to other protocols.
  • MPMs unix: Place signals handlers and helpers out of DSOs to avoid a possible crash if a signal is caught during (graceful) restart.
  • core: Deprecate ap_get_basic_auth_pw() and add ap_get_basic_auth_components().
  • mod_rewrite: When a substitution is a fully qualified URL, and the scheme/host/port matches the current virtual host, stop interpreting the path component as a local path just because the first component of the path exists in the filesystem. Adds RewriteOption "LegacyPrefixDocRoot" to revert to previous behavior. PR60009.
  • core: ap_parse_form_data() URL-decoding doesn't work on EBCDIC platforms. PR61124.
  • ab: enable option processing for setting a custom HTTP method also for non-SSL builds.
  • core: EBCDIC fixes for interim responses with additional headers.
  • mod_ssl: Consistently pass the expected bio_filter_in_ctx_t to ssl_io_filter_error().
  • mod_env: when processing a 'SetEnv' directive, warn if the environment variable name includes a '='. It is likely a configuration error.
  • Evaluate nested If/ElseIf/Else configuration blocks.
  • mod_rewrite: Add 'BNP' (backreferences-no-plus) flag to RewriteRule to allow spaces in backreferences to be encoded as %20 instead of '+'.
  • mod_rewrite: Add the possibility to limit the escaping to specific characters in backreferences by listing them in the B flag.
  • mod_substitute: Fix spurious AH01328 (Line too long) errors on EBCDIC systems.
  • mod_http2: fail requests without ERROR log in case we need to read interim responses and see only garbage. This can happen if proxied servers send data where none should be, e.g. a body for a HEAD request.
  • mod_proxy_http2: adding support for Reverse Proxy Request headers.
  • mod_http2: fixed possible deadlock that could occur when connections were terminated early with ongoing streams. Fixed possible hanger with timeout on race when connection considers itself idle.
  • mod_http2: MaxKeepAliveRequests now limits the number of times a slave connection gets reused.
  • mod_brotli: Add a new module for dynamic Brotli (RFC 7932) compression.
  • mod_proxy_http2: Fixed bug in re-attempting proxy requests after connection error. Reliability of reconnect handling improved.
  • mod_http2: better performance, eliminated need for nested locks and thread privates. Moving request setups from the main connection to the worker threads. Increase number of spare connections kept.
  • mod_http2: input buffering and dynamic flow windows for increased throughput. Requires nghttp2 >= v1.5.0 features. Announced at startup in mod_http2 INFO log as feature 'DWINS'.
  • mod_http2: h2 workers with improved scalability for better scheduling performance. There are H2MaxWorkers threads created at start and the number is kept constant for now.
  • mod_http2: obsoleted option H2SessionExtraFiles, will be ignored and just log a warning.
  • mod_autoindex: Add IndexOptions UseOldDateFormat to allow the date format from 2.2 in the Last Modified column. PR60846.
  • core: Add %{REMOTE_PORT} to the expression parser. PR59938
  • mod_cache: Fix a regression in 2.4.25 for the forward proxy case by computing and using the same entity key according to when the cache checks, loads and saves the request. PR 60577.
  • mod_proxy_hcheck: Don't validate timed out responses.
  • mod_proxy_hcheck: Ensure thread-safety when concurrent healthchecks are in use (ProxyHCTPsize > 0). PR 60071.
  • core: %{DOCUMENT_URI} used in nested SSI expressions should point to the URI originally requsted by the user, not the nested documents URI. This restores the behavior of this variable to match the "legacy" SSI parser.
  • mod_proxy_fcgi: Add ProxyFCGISetEnvIf to fixup CGI environment variables just before invoking the FastCGI.
  • mod_proxy: Allow the per-request environment variable "no-proxy" to be used as an alternative to ProxyPass /path !. This is primarily to set exceptions for ProxyPass specified in <Location> context.
  • Use SetEnvIf, not SetEnv.
  • mod_proxy_fcgi: Return to 2.4.20-and-earlier behavior of leaving a "proxy:fcgi://" prefix in the SCRIPT_FILENAME environment variable by default. Add ProxyFCGIBackendType to allow the type of backend to be specified so these kinds of fixups can be restored without impacting FPM. PR60576
  • mod_ssl: work around leaks on (graceful) restart.
  • mod_ssl: Add support for OpenSSL 1.1.0.
  • Don't set SO_REUSEPORT unless ListenCoresBucketsRatio is greater than zero.
  • mod_http2: moving session cleanup to pre_close hook to avoid races with modules already shut down and slave connections still operating.
  • mod_lua: Support for Lua 5.3
  • mod_proxy_http2: support for ProxyPreserverHost directive.
  • mod_http2: fix for crash when running out of memory.
  • mod_proxy_fcgi: Return HTTP 504 rather than 503 in case of proxy timeout.
  • mod_http2: not counting file buckets again stream max buffer limits.
  • Effectively transfering static files in one step from slave to master connection.
  • mod_http2: comforting ap_check_pipeline() on slave connections to facilitate reuse
  • mod_http2: http/2 streams now with state handling/transitions as defined in RFC7540. Stream cleanup/connection shutdown reworked to become easier to understand/maintain/debug. Added many asserts on state and cleanup transitions.
  • mod_auth_digest: Use an anonymous shared memory segment by default, preventing startup failure after unclean shutdown. PR 54622.
  • mod_filter: Fix AddOutputFilterByType with non-content-level filters. PR 58856.
  • mod_watchdog: Fix semaphore leak over restarts.
  • mod_http2: regression fix on PR 59348, on graceful restart, ongoing streams are finished normally before the final GOAWAY is sent.
  • mod_proxy: Allow the per-request environment variable "no-proxy" to be used as an alternative to ProxyPass /path !. This is primarily to set exceptions for ProxyPass specified in <Location> context. Use SetEnvIf, not SetEnv. PR 60458.
  • mod_http2: fixes PR60599, sending proper response for conditional requests answered by mod_cache. Jeff Wheelhouse,
  • mod_http2: rework of stream resource cleanup to avoid a crash in a close of a lingering connection. Prohibit special file bucket beaming for shared buckets. Files sent in stream output now use the stream pool as read buffer, reducing memory footprint of connections.
  • mod_proxy_fcgi, mod_fcgid: Fix crashes in ap_fcgi_encoded_env_len() when modules add empty environment variables to the request. PR 60275.
  • mod_http2: fix for possible page fault when stream is resumed during session shutdown. sidney-j-r-m (github)]
  • mod_http2: fix for h2 session ignoring new responses while already open streams continue to have data available.
  • mod_http2: adding support for MergeTrailers directive.
  • mod_http2: limiting DATA frame sizes by TLS record sizes in use on the connection. Flushing outgoing frames earlier.
  • mod_http2: cleanup beamer registry on server reload. PR 60510.
  • mod_proxy_{ajp,fcgi}: Fix a possible crash when reusing an established backend connection, happening with LogLevel trace2 or higher configured, or at any log level with compilers not detected as C99 compliant (e.g. MSVC on Windows).
  • mod_ext_filter: Don't interfere with "error buckets" issued by other modules. PR 60375.
  • mod_http2: fixes https://github.com/icing/mod_h2/issues/126 e.g. beam bucket lifetime handling when data is sent over temporary pools.

New in Apache HTTP Server 2.4.18 (Dec 14, 2015)

  • mod_ssl: for all ssl_engine_vars.c lookups, fall back to master connection if conn_rec itself holds no valid SSLConnRec*. Fixes PR58666
  • mod_http2: connection level window for flow control is set to protocol maximum of 2GB-1, preventing window exhaustion when sending data on many streams with higher cumulative window size
  • Reducing write frequency unless push promises need to be flushed
  • mod_http2: required minimum version of libnghttp2 is 1.2.1
  • mod_proxy_fdpass: Fix AH01153 error when using the default configuration. In earlier version of httpd, you can explicitelly set the 'flusher' parameter to 'flush' as a workaround. (i.e. flusher=flush). Add documentation for the 'flusher' parameter when defining a proxy worker
  • mod_ssl: For the "SSLStaplingReturnResponderErrors off" case, make sure to only staple responses with certificate status "good".
  • mod_http2: new directive 'H2PushPriority' to allow priority specifications on server pushed streams according to their content-type
  • mod_http2: fixes crash on connection abort for a busy connection fixes crash on a request that did not produce any response
  • mod_http2: trailers are sent after reponse body if set in request_rec trailers_out before the end-of-request bucket is sent through the output filters.
  • mod_http2: incoming trailers (headers after request body) are properly forwarded to the processing engine.
  • mod_http2: new directive 'H2Push' to en-/disable HTTP/2 server pushes a server/virtual host. Pushes are initiated by the presence of 'Link:' headers with relation 'preload' on a response.
  • mod_http2: write performance of http2 improved for larger resources especially static files.
  • core: if the first HTTP/1.1 request on a connection goes to a server that prefers different protocols, these protocols are announced in a Upgrade header on the response, mentioning the preferred protocols
  • mod_http2: new directives 'H2TLSWarmUpSize' and 'H2TLSCoolDownSecs' to control TLS record sizes during connection lifetime
  • mod_http2: new directive 'H2ModernTLSOnly' to enforce security requirements of RFC 7540 on TLS connections
  • core: add ap_get_protocol_upgrades() to retrieve the list of protocols that a client could possibly upgrade to. Use in first request on a connection to announce protocol choices.
  • mod_http2: reworked deallocation on connection shutdown and worker abort. Separate parent pool for all workers. worker threads are joined on planned worker shutdown.
  • mod_ssl: when receiving requests for other virtual hosts than the handshake server, the SSL parameters are checked for equality. With equal configuration, requests are passed for processing. Any change will trigger the old behaviour of "421 Misdirected Request"
  • SSL now remembers the cipher suite that was used for the last handshake. This is compared against for any vhost/directory cipher specification. Detailed examination of renegotiation is only done when these do not match
  • Renegotiation is 403ed when a master connection is present. Exact reason is given additionally in a request note.
  • core: Fix scoreboard crash (SIGBUS) on hardware requiring strict 64bit alignment (SPARC64, PPC64).
  • mod_cache: Accept HT (Horizontal Tab) when parsing cache related header fields as described in RFC7230.
  • core/util_script: making REDIRECT_URL a full URL is now opt-in via new 'QualifyRedirectURL' directive
  • core: Limit to ten the number of tolerated empty lines between request and consume them before the pipelining check to avoid possible response delay when reading the next request without flushing.
  • mod_ssl: Extend expression parser registration to support ssl variables in any expression using mod_rewrite syntax "%{SSL:VARNAME}" or function syntax "ssl(VARNAME)".

New in Apache HTTP Server 2.4.17 (Oct 16, 2015)

  • mod_http2: added donated HTTP/2 implementation via core module. Similar configuration options to mod_ssl.
  • mod_proxy: don't recyle backend announced "Connection: close" connections to avoid reusing it should the close be effective after some new request is ready to be sent.
  • mod_substitute: Allow to configure the patterns merge order with the new SubstituteInheritBefore on|off directive. PR 57641
  • mod_proxy: Fix ProxySourceAddress binding failure with AH00938.
  • mod_ssl: Support compilation against libssl built with OPENSSL_NO_SSL3, and change the compiled-in default for SSL[Proxy]Protocol to "all -SSLv3", in accordance with RFC 7568. PR 58349, PR 57120.
  • mod_ssl: append :!aNULL:!eNULL:!EXP to the cipher string settings, instead of prepending !aNULL:!eNULL:!EXP: (as was the case in 2.4.7 and later). Enables support for configuring the SUITEB cipher strings introduced in OpenSSL 1.0.2. PR 58213.
  • mod_ssl: Add support for extracting the msUPN and dnsSRV forms of subjectAltName entries of type "otherName" into SSL_{CLIENT,SERVER}_SAN_OTHER_{msUPN,dnsSRV}_n environment variables.
  • mod_logio: Fix logging of %^FB (time to first byte) on the first request on an SSL connection.
  • mod_cache: r->err_headers_out is not merged into r->headers when mod_cache is enabled and the response is cached for the first time.
  • mod_slotmem_shm: Fix slots/SHM files names on restart for systems that can't create new (clear) slots while previous children gracefully stopping still use the old ones (e.g. Windows, OS2). mod_proxy_balancer failed to restart whenever the number of configured balancers/members changed during restart.
  • core/util_script: make REDIRECT_URL a full URL.
  • MPMs: Support SO_REUSEPORT to create multiple duplicated listener records for scalability.
  • mod_proxy: Fix a race condition that caused a failed worker to be retried before the retry period is over.
  • mod_autoindex: Allow autoindexes when neither mod_dir nor mod_mime are loaded.
  • mod_rewrite: Allow cookies set by mod_rewrite to contain ':' by accepting ';' as an alternate separator.
  • apxs: Add HTTPD_VERSION and HTTPD_MMN to the variables available with apxs -q.
  • mod_rewrite: Avoid a crash when lacking correct DB access permissions when using RewriteMap with MapType dbd or fastdbd.
  • mod_authz_dbd: Avoid a crash when lacking correct DB access permissions.
  • mod_socache_memcache: Add the 'MemcacheConnTTL' directive to control how long to keep idle connections with the memcache server(s). Change default value from 600 usec (!) to 15 sec.
  • mod_dir: Prevent the internal identifier "httpd/unix-directory" from appearing as a Content-Type response header when requests for a directory are rewritten by mod_rewrite.

New in Apache HTTP Server 2.4.16 (Jul 17, 2015)

  • http: Fix LimitRequestBody checks when there is no more bytes to read. [Michael Kaufmann ]
  • mod_alias: Revert expression parser support for Alias, ScriptAlias and Redirect due to a regression (introduced in 2.4.13, not released).
  • mod_reqtimeout: Don't let pipelining checks and keep-alive times interfere with the timeouts computed for subsequent requests. PR 56729. [Eric Covener, Yann Ylavic]
  • core: Avoid a possible truncation of the faulty header included in the HTML response when LimitRequestFieldSize is reached. [Yann Ylavic]
  • mod_ldap: In some case, LDAP_NO_SUCH_ATTRIBUTE could be returned instead of an error during a compare operation. [Eric Covener]

New in Apache HTTP Server 2.4.15 (Jul 17, 2015)

  • mod_ext_filter, mod_charset_lite: Avoid inadvertent filtering of protocol data during read of chunked request bodies. PR 58049. [Edward Lu ]
  • mod_ldap: Stop leaking LDAP connections when 'LDAPConnectionPoolTTL 0' is configured. PR 58037. [Ted Phelps ]
  • core: Allow spaces after chunk-size for compatibility with implementations using a pre-filled buffer. [Yann Ylavic, Jeff Trawick]
  • mod_ssl: Remove deprecated SSLCertificateChainFile warning. [Yann Ylavic]

New in Apache HTTP Server 2.4.14 (Jul 17, 2015)

  • SECURITY: CVE-2015-3183 (cve.mitre.org) core: Fix chunk header parsing defect. Remove apr_brigade_flatten(), buffering and duplicated code from the HTTP_IN filter, parse chunks in a single pass with zero copy. Limit accepted chunk-size to 2^63-1 and be strict about chunk-ext authorized characters. [Graham Leggett, Yann Ylavic]
  • SECURITY: CVE-2015-3185 (cve.mitre.org) Replacement of ap_some_auth_required (unusable in Apache httpd 2.4) with new ap_some_authn_required and ap_force_authn hook. [Ben Reser]

New in Apache HTTP Server 2.4.13 (Jul 17, 2015)

  • SECURITY: CVE-2015-0253 (cve.mitre.org) core: Fix a crash with ErrorDocument 400 pointing to a local URL-path with the INCLUDES filter active, introduced in 2.4.11. PR 57531. [Yann Ylavic]
  • SECURITY: CVE-2015-0228 (cve.mitre.org) mod_lua: A maliciously crafted websockets PING after a script calls r:wsupgrade() can cause a child process crash. [Edward Lu ]
  • mod_proxy: Don't put the worker in error state for 500 or 503 errors returned by the backend unless failonstatus is configured to. PR 56925. [Yann Ylavic]
  • core: Don't lowercase the argument to SetHandler if it begins with "proxy:unix". PR 57968. [Eric Covener]
  • mod_ssl OCSP Stapling: Don't block initial handshakes while refreshing the OCSP response for a different certificate. mod_ssl has an additional global mutex, "ssl-stapling-refresh". PR 57131 (partial fix). [Jeff Trawick]
  • mod_authz_dbm: Fix crashes when "dbm-file-group" is used and authz modules were loaded in the "wrong" order. [Joe Orton]
  • mod_authn_dbd, mod_authz_dbd, mod_session_dbd, mod_rewrite: Fix lifetime of DB lookup entries independently of the selected DB engine. PR 46421. [Steven whitson , Jan Kaluza, Yann Ylavic].
  • In alignment with RFC 7525, the default recommended SSLCipherSuite and SSLProxyCipherSuite now exclude RC4 as well as MD5. Also, the default recommended SSLProtocol and SSLProxyProtocol directives now exclude SSLv3. Existing configurations must be adjusted by the administrator. [William Rowe]
  • mod_ssl: Add support for extracting subjectAltName entries of type rfc822Name and dNSName into SSL_{CLIENT,SERVER}_SAN_{Email,DNS}_n environment variables. Also addresses PR 57207. [Kaspar Brand]
  • dav_validate_request: avoid validating locks and ETags when there are no If headers providing them on a resource we aren't modifying. [Ben Reser]
  • mod_proxy_scgi: ProxySCGIInternalRedirect now allows an alternate response header to be used by the application, for when the application or framework is unable to return Location in the internal-redirect form. [Jeff Trawick]
  • core: Cleanup the request soon/even if some output filter fails to handle the EOR bucket. [Yann Ylavic]
  • mpm_event: Allow for timer events duplicates. [Jim Jagielski, Yann Ylavic]
  • mod_proxy, mod_ssl, mod_cache_socache, mod_socache_*: Support machine readable server-status produced when using the "?auto" query string. [Rainer Jung]
  • mod_status: Add more data to machine readable server-status produced when using the "?auto" query string. [Rainer Jung]
  • mod_ssl: Check for the Entropy Gathering Daemon (EGD) availability at configure time (RAND_egd), and complain if SSLRandomSeed requires using it otherwise. [Bernard Spil , Stefan Sperling, Kaspar Brand]
  • mod_ssl: make sure to consistently output SSLCertificateChainFile deprecation warnings, when encountered in a VirtualHost block. [Falco Schwarz ]
  • mod_log_config: Add "%{UNIT}T" format to output request duration in seconds, milliseconds or microseconds depending on UNIT ("s", "ms", "us"). [Ben Reser, Rainer Jung]
  • Allow FallbackResource to work when a directory is requested and there is no autoindex nor DirectoryIndex. [Jack , Eric Covener]
  • mod_proxy_wstunnel: Bypass the handler while the connection is not upgraded to WebSocket, so that other modules can possibly take over the leading HTTP requests. [Yann Ylavic]
  • mod_http: Fix incorrect If-Match handling. PR 57358 [Kunihiko Sakamoto ]
  • mod_ssl: Add a warning if protocol given in SSLProtocol or SSLProxyProtocol will override other parameters given in the same directive. This could be a missing + or - prefix. PR 52820 [Christophe Jaillet]
  • core, modules: Avoid error response/document handling by the core if some handler or input filter already did it while reading the request (causing a double response body). [Yann Ylavic]
  • mod_proxy_ajp: Fix client connection errors handling and logged status when it occurs. PR 56823. [Yann Ylavic]
  • mod_proxy: Use the correct server name for SNI in case the backend SSL connection itself is established via a proxy server. PR 57139 [Szabolcs Gyurko ]
  • mod_ssl: Fix possible crash when loading server certificate constraints. PR 57694. [Paul Spangler , Yann Ylavic]
  • build: Don't load both mod_cgi and mod_cgid in the default configuration if they're both built. [olli hauer ]
  • mod_logio: Add LogIOTrackTTFB and %^FB logformat to log the time taken to start writing response headers. [Eric Covener]
  • mod_ssl: Avoid compilation errors with LibreSSL related to the use of ENGINE_CTRL_CHIL_SET_FORKCHECK. [Stuart Henderson ]
  • mod_proxy_http: Use the "Connection: close" header for requests to backends not recycling connections (disablereuse), including the default reverse and forward proxies. [Yann Ylavic]
  • mod_proxy: Add ap_connection_reusable() for checking if a connection is reusable as of this point in processing. [Jeff Trawick]
  • mod_proxy_wstunnel: Avoid an empty response by failing with 502 (Bad Gateway) when no response is ever received from the backend. [Jan Kaluza]
  • core_filters: Restore/disable TCP_NOPUSH option after non-blocking sendfile. [Yann Ylavic]
  • mod_buffer: Forward flushed input data immediately and avoid (unlikely) access to freed memory. [Yann Ylavic, Christophe Jaillet]
  • core: Add CGIPassAuth directive to control whether HTTP authorization headers are passed to scripts as CGI variables. PR 56855. [Jeff Trawick]
  • core: Initialize scoreboard's used optional functions on graceful restarts to avoid a crash when relocation occurs. PR 57177. [Yann Ylavic]
  • mod_dav: Avoid a potential integer underflow in the lock timeout value sent back to a client. The answer to a LOCK request could be an extremly large integer if the time needed to lock the resource was longer that the requested timeout given in the LOCK request. In such a case, we now answer "Second-0". PR55420 [Christophe Jaillet]
  • mod_cgid: Within the first minute of a server start or restart, allow mod_cgid to retry connecting to its daemon process. Previously, 'No such file or directory: unable to connect to cgi daemon...' could be logged without an actual retry. PR57685. [Edward Lu ] mod_proxy: Use the original (non absolute) form of the request-line's URI for requests embedded in CONNECT payloads used to connect SSL backends via a ProxyRemote forward-proxy. PR 55892. [Hendrik Harms , William Rowe, Yann Ylavic]
  • http: Make ap_die() robust against any HTTP error code and not modify response status (finally logged) when nothing is to be done. PR 56035. [Yann Ylavic]
  • mod_proxy_connect/wstunnel: If both client and backend sides get readable at the same time, don't lose errors occuring while forwarding on the first side when none occurs next on the other side, and abort. [Yann Ylavic]
  • mod_rewrite: Improve relative substitutions in per-directory/htaccess context for directories found by mod_userdir and mod_alias. These no longer require RewriteBase to be specified. [Eric Covener]
  • mod_proxy_http: Don't expect the backend to ack the "Connection: close" to finally close those not meant to be kept alive by SetEnv proxy-nokeepalive or force-proxy-request-1.0. [Yann Ylavic]
  • core: If explicitly configured, use the KeepaliveTimeout value of the virtual host which handled the latest request on the connection, or by default the one of the first virtual host bound to the same IP:port. PR56226. [Yann Ylavic]
  • mod_lua: After a r:wsupgrade(), mod_lua was not properly responding to a websockets PING but instead invoking the specified script. PR57524. [Edward Lu ]
  • mod_ssl: Add the SSL_CLIENT_CERT_RFC4523_CEA variable, which provides a combination of certificate serialNumber and issuer as defined by CertificateExactMatch in RFC4523. [Graham Leggett]
  • core: Add expression support to ErrorDocument. Switch from a fixed sized 664 byte array per merge to a hash table. [Graham Leggett]
  • ab: Add missing longest request (100%) to CSV export. [Marcin Fabrykowski ]
  • mod_macro: Clear macros before initialization to avoid use-after-free on startup or restart when the module is linked statically. PR 57525 [apache.org tech.futurequest.net, Yann Ylavic]
  • mod_alias: Introduce expression parser support for Alias, ScriptAlias and Redirect. [Graham Leggett]
  • mod_ssl: 'SSLProtocol ALL' was being ignored in virtual host context. PR 57100. [Michael Kaufmann , Yann Ylavic]
  • mpm_event: Avoid access to the scoreboard from the connection while it is suspended (waiting for events). [Eric Covener, Jeff Trawick]
  • mod_ssl: Fix renegotiation failures redirected to an ErrorDocument. PR 57334. [Yann Ylavic].
  • mod_deflate: A misplaced check prevents limiting small bodies with the new inflate limits. PR56872. [Edward Lu, Eric Covener, Yann Ylavic]
  • mod_proxy_ajp: Forward SSL protocol name (SSLv3, TLSv1.1 etc.) as a request attribute to the backend. Recent Tomcat versions will extract it and provide it as a servlet request attribute named "org.apache.tomcat.util.net.secure_protocol_version". [Rainer Jung]
  • core: Optimize string concatenation in expression parser when evaluating a string expression. [Rainer Jung]
  • acinclude.m4: Generate #LoadModule directive in default httpd.conf for every --enable-mpms-shared. PR 53882. [olli hauer , Yann Ylavic]
  • mod_authn_dbd: Fix the error message logged in case of error while querying the database. This is associated to AH01656 and AH01661. [Christophe Jaillet]
  • mod_authz_groupfile: Reduce the severity of AH01667 from ERROR to DEBUG, because it may be evaluated inside . PR55523. [Eric Covener]
  • mod_ssl: Fix small memory leak during initialization when ECDH is used. [Jan Kaluza]

New in Apache HTTP Server 2.4.12 (Jul 17, 2015)

  • mpm_winnt: Accept utf-8 (Unicode) service names and descriptions for internationalization. [William Rowe]
  • mpm_winnt: Normalize the error and status messages emitted by service.c, the service control interface for Windows. [William Rowe]
  • configure: Fix --enable-v4-mapped configuration on *BSD. PR 53824. [ olli hauer , Yann Ylavic ]

New in Apache HTTP Server 2.4.10 (Jul 17, 2015)

  • SECURITY: CVE-2014-0117 (cve.mitre.org) mod_proxy: Fix crash in Connection header handling which allowed a denial of service attack against a reverse proxy with a threaded MPM. [Ben Reser]
  • SECURITY: CVE-2014-3523 (cve.mitre.org) Fix a memory consumption denial of service in the WinNT MPM (used in all Windows installations). Workaround: AcceptFilter {none|connect} [Jeff Trawick]
  • SECURITY: CVE-2014-0226 (cve.mitre.org) Fix a race condition in scoreboard handling, which could lead to a heap buffer overflow. [Joe Orton, Eric Covener]
  • SECURITY: CVE-2014-0118 (cve.mitre.org) mod_deflate: The DEFLATE input filter (inflates request bodies) now limits the length and compression ratio of inflated request bodies to avoid denial of sevice via highly compressed bodies. See directives DeflateInflateLimitRequestBody, DeflateInflateRatioLimit, and DeflateInflateRatioBurst. [Yann Ylavic, Eric Covener]
  • SECURITY: CVE-2014-0231 (cve.mitre.org) mod_cgid: Fix a denial of service against CGI scripts that do not consume stdin that could lead to lingering HTTPD child processes filling up the scoreboard and eventually hanging the server. By default, the client I/O timeout (Timeout directive) now applies to communication with scripts. The CGIDScriptTimeout directive can be used to set a different timeout for communication with scripts. [Rainer Jung, Eric Covener, Yann Ylavic]
  • mod_ssl: Extend the scope of SSLSessionCacheTimeout to sessions resumed by TLS session resumption (RFC 5077). [Rainer Jung]
  • mod_deflate: Don't fail when flushing inflated data to the user-agent and that coincides with the end of stream ("Zlib error flushing inflate buffer"). PR 56196. [Christoph Fausak ]
  • mod_proxy_ajp: Forward local IP address as a custom request attribute like we already do for the remote port. [Rainer Jung]
  • core: Include any error notes set by modules in the canned error response for 403 errors. [Jeff Trawick]
  • mod_ssl: Set an error note for requests rejected due to SSLStrictSNIVHostCheck. [Jeff Trawick]
  • mod_ssl: Fix issue with redirects to error documents when handling SNI errors. [Jeff Trawick]
  • mod_ssl: Fix tmp DH parameter leak, adjust selection to prefer larger keys and support up to 8192-bit keys. [Ruediger Pluem, Joe Orton]
  • mod_dav: Fix improper encoding in PROPFIND responses. PR 56480. [Ben Reser]
  • WinNT MPM: Improve error handling for termination events in child. [Jeff Trawick]
  • mod_proxy: When ping/pong is configured for a worker, don't send or forward "100 Continue" (interim) response to the client if it does not expect one. [Yann Ylavic]
  • mod_ldap: Be more conservative with the last-used time for LDAPConnectionPoolTTL. PR54587 [Eric Covener]
  • mod_ldap: LDAP connections used for authn were not respecting LDAPConnectionPoolTTL. PR54587 [Eric Covener]
  • mod_proxy_fcgi: Fix occasional high CPU when handling request bodies. [Jeff Trawick]
  • event MPM: Fix possible crashes (third-party modules accessing c->sbh) or occasional missed mod_status updates under load. PR 56639. [Edward Lu ]
  • mod_authnz_ldap: Support primitive LDAP servers do not accept filters, such as "SDBM-backed LDAP" on z/OS, by allowing a special filter "none" to be specified in AuthLDAPURL. [Eric Covener]
  • mod_deflate: Fix inflation of files larger than 4GB. PR 56062. [Lukas Bezdicka ]
  • mod_deflate: Handle Zlib header and validation bytes received in multiple chunks. PR 46146. [Yann Ylavic]
  • mod_proxy: Allow reverse-proxy to be set via explicit handler. [ryo takatsuki ]
  • ab: support custom HTTP method with -m argument. PR 56604. [Roman Jurkov ]
  • mod_proxy_balancer: Correctly encode user provided data in management interface. PR 56532 [Maksymilian, ]
  • mod_proxy_fcgi: Support iobuffersize parameter. [Jeff Trawick]
  • mod_auth_form: Add a debug message when the fields on a form are not recognised. [Graham Leggett]
  • mod_cache: Preserve non-cacheable headers forwarded from an origin 304 response. PR 55547. [Yann Ylavic]
  • mod_proxy_wstunnel: Fix the use of SSL connections with the "wss:" scheme. PR55320. [Alex Liu ]
  • mod_socache_shmcb: Correct counting of expirations for status display. Expirations happening during retrieval were not counted. [Rainer Jung]
  • mod_cache: Retry unconditional request with the full URL (including the query-string) when the origin server's 304 response does not match the conditions used to revalidate the stale entry. [Yann Ylavic].
  • mod_alias: Stop setting CONTEXT_PREFIX and CONTEXT_DOCUMENT environment variables as a result of AliasMatch. [Eric Covener]
  • mod_cache: Don't add cached/revalidated entity headers to a 304 response. PR 55547. [Yann Ylavic]
  • mod_proxy_scgi: Support Unix sockets. ap_proxy_port_of_scheme(): Support default SCGI port (4000). [Jeff Trawick]
  • mod_cache: Fix AH00784 errors on Windows when the the CacheLock directive is enabled. [Eric Covener]
  • mod_expires: don't add Expires header to error responses (4xx/5xx), be they generated or forwarded. PR 55669. [Yann Ylavic]
  • mod_proxy_fcgi: Don't segfault when failing to connect to the backend. (regression in 2.4.9 release) [Jeff Trawick]
  • mod_authn_socache: Fix crash at startup in certain configurations. PR 56371. (regression in 2.4.7) [Jan Kaluza]
  • mod_ssl: restore argument structure for "exec"-type SSLPassPhraseDialog programs to the form used in releases up to 2.4.7, and emulate a backwards-compatible behavior for existing setups. [Kaspar Brand]
  • mod_ssl: Add SSLOCSPUseRequestNonce directive to control whether or not OCSP requests should use a nonce to be checked against the responder's one. PR 56233. [Yann Ylavic, Kaspar Brand]
  • mod_ssl: "SSLEngine off" will now override a Listen-based default and does disable mod_ssl for the vhost. [Joe Orton]
  • mod_lua: Enforce the max post size allowed via r:parsebody() [Daniel Gruno]
  • mod_lua: Use binary comparison to find boundaries for multipart objects, as to not terminate our search prematurely when hitting a NULL byte. [Daniel Gruno]
  • mod_ssl: add workaround for SSLCertificateFile when using OpenSSL versions before 0.9.8h and not specifying an SSLCertificateChainFile (regression introduced with 2.4.8). PR 56410. [Kaspar Brand]
  • mod_ssl: bring SNI behavior into better conformance with RFC 6066: no longer send warning-level unrecognized_name(112) alerts, and limit startup warnings to cases where an OpenSSL version without TLS extension support is used. PR 56241. [Kaspar Brand]
  • mod_proxy_html: Avoid some possible memory access violation in case of specially crafted files, when the ProxyHTMLMeta directive is turned on. Follow up of PR 56287 [Christophe Jaillet]
  • mod_auth_form: Make sure the optional functions are loaded even when the AuthFormProvider isn't specified. [Graham Leggett]
  • mod_ssl: avoid processing bogus SSLCertificateKeyFile values (and logging garbled file names). PR 56306. [Kaspar Brand]
  • mod_ssl: fix merging of global and vhost-level settings with the SSLCertificateFile, SSLCertificateKeyFile, and SSLOpenSSLConfCmd directives. PR 56353. [Kaspar Brand]
  • mod_headers: Allow the "value" parameter of Header and RequestHeader to contain an ap_expr expression if prefixed with "expr=". [Eric Covener]
  • rotatelogs: Avoid creation of zombie processes when -p is used on Unix platforms. [Joe Orton]
  • mod_authnz_fcgi: New module to enable FastCGI authorizer applications to authenticate and/or authorize clients. [Jeff Trawick]
  • mod_proxy: Do not try to parse the regular expressions passed by ProxyPassMatch as URL as they do not follow their syntax. PR 56074. [Ruediger Pluem]
  • mod_reqtimeout: Resolve unexpected timeouts on keepalive requests under the Event MPM. PR56216. [Frank Meier ]
  • mod_proxy_fcgi: Fix sending of response without some HTTP headers that might be set by filters. [Jim Riggs ]
  • mod_proxy_html: Do not delete the wrong data from HTML code when a "http-equiv" meta tag specifies a Content-Type behind any other "http-equiv" meta tag. PR 56287 [Micha Lenk ]
  • mod_proxy: Don't reuse a SSL backend connection whose requested SNI differs. PR 55782. [Yann Ylavic]
  • Add suspend_connection and resume_connection hooks to notify modules when the thread/connection relationship changes. (Should be implemented for any third-party async MPMs.) [Jeff Trawick]
  • mod_proxy_wstunnel: Don't issue AH02447 and log a 500 on routine hangups from websockets origin servers. PR 56299 [Yann Ylavic, Edward Lu , Eric Covener]
  • mod_proxy_wstunnel: Don't pool backend websockets connections, because we need to handshake every time. PR 55890. [Eric Covener]
  • mod_lua: Redesign how request record table access behaves, in order to utilize the request record from within these tables. [Daniel Gruno]
  • mod_lua: Add r:wspeek for peeking at WebSocket frames. [Daniel Gruno]
  • mod_lua: Log an error when the initial parsing of a Lua file fails. [Daniel Gruno, Felipe Daragon ]
  • mod_lua: Reformat and escape script error output. [Daniel Gruno, Felipe Daragon ]
  • mod_lua: URL-escape cookie keys/values to prevent tainted cookie data from causing response splitting. [Daniel Gruno, Felipe Daragon ]
  • mod_lua: Disallow newlines in table values inside the request_rec, to prevent HTTP Response Splitting via tainted headers. [Daniel Gruno, Felipe Daragon ]
  • mod_lua: Remove the non-working early/late arguments for LuaHookCheckUserID. [Daniel Gruno]
  • mod_lua: Change IVM storage to use shm [Daniel Gruno]
  • mod_lua: More verbose error logging when a handler function cannot be found. [Daniel Gruno]

New in Apache HTTP Server 2.4.9 (Jul 17, 2015)

  • mod_ssl: Work around a bug in some older versions of OpenSSL that would cause a crash in SSL_get_certificate for servers where the certificate hadn't been sent. [Stephen Henson]
  • mod_lua: Add a fixups hook that checks if the original request is intended for LuaMapHandler. This fixes a bug where FallbackResource invalidates the LuaMapHandler directive in certain cases by changing the URI before the map handler code executes [Daniel Gruno, Daniel Ferradal ].

New in Apache HTTP Server 2.4.8 (Jul 17, 2015)

  • SECURITY: CVE-2014-0098 (cve.mitre.org) Clean up cookie logging with fewer redundant string parsing passes. Log only cookies with a value assignment. Prevents segfaults when logging truncated cookies. [William Rowe, Ruediger Pluem, Jim Jagielski]
  • SECURITY: CVE-2013-6438 (cve.mitre.org) mod_dav: Keep track of length of cdata properly when removing leading spaces. Eliminates a potential denial of service from specifically crafted DAV WRITE requests [Amin Tora ]
  • core: Support named groups and backreferences within the LocationMatch, DirectoryMatch, FilesMatch and ProxyMatch directives. (Requires non-ancient PCRE library) [Graham Leggett]
  • core: draft-ietf-httpbis-p1-messaging-23 corrections regarding TE/CL conflicts. [Yann Ylavic , Jim Jagielski]
  • mod_dir: Add DirectoryCheckHandler to allow a 2.2-like behavior, skipping execution when a handler is already set. PR53929. [Eric Covener]
  • mod_ssl: Do not perform SNI / Host header comparison in case of a forward proxy request. [Ruediger Pluem]
  • mod_ssl: Remove the hardcoded algorithm-type dependency for the SSLCertificateFile and SSLCertificateKeyFile directives, to enable future algorithm agility, and deprecate the SSLCertificateChainFile directive (obsoleted by SSLCertificateFile). [Kaspar Brand]
  • mod_rewrite: Add RewriteOptions InheritDown, InheritDownBefore, and IgnoreInherit to allow RewriteRules to be pushed from parent scopes to child scopes without explicitly configuring each child scope. PR56153. [Edward Lu ]
  • prefork: Fix long delays when doing a graceful restart. PR 54852 [Jim Jagielski, Arkadiusz Miskiewicz ]
  • FreeBSD: Disable IPv4-mapped listening sockets by default for versions 5+ instead of just for FreeBSD 5. PR 53824. [Jeff Trawick]
  • mod_proxy_wstunnel: Avoid busy loop on client errors, drop message IDs 02445, 02446, and 02448 to TRACE1 from DEBUG. PR 56145. [Joffroy Christen , Eric Covener]
  • mod_remoteip: Correct the trusted proxy match test. PR 54651. [Yoshinori Ehara , Eugene L ]
  • mod_proxy_fcgi: Fix error message when an unexpected protocol version number is received from the application. PR 56110. [Jeff Trawick]
  • mod_remoteip: Use the correct IP addresses to populate the proxy_ips field. PR 55972. [Mike Rumph]
  • mod_lua: Update r:setcookie() to accept a table of options and add domain, path and httponly to the list of options available to set. PR 56128 [Edward Lu , Daniel Gruno] mod_lua: Fix r:setcookie() to add, rather than replace, the Set-Cookie header. PR56105 [Kevin J Walters , Edward Lu ]
  • mod_lua: Allow for database results to be returned as a hash with row-name/value pairs instead of just row-number/value. [Daniel Gruno]
  • mod_rewrite: Add %{CONN_REMOTE_ADDR} as the non-useragent counterpart to %{REMOTE_ADDR}. PR 56094. [Edward Lu ]
  • WinNT MPM: If ap_run_pre_connection() fails or sets c->aborted, don't save the socket for reuse by the next worker as if it were an APR_SO_DISCONNECTED socket. Restores 2.2 behavior. [Eric Covener]
  • mod_dir: Don't search for a DirectoryIndex or DirectorySlash on a URL that was just rewritten by mod_rewrite. PR53929. [Eric Covener]
  • mod_session: When we have a session we were unable to decode, behave as if there was no session at all. [Thomas Eckert ]
  • mod_session: Fix problems interpreting the SessionInclude and SessionExclude configuration. PR 56038. [Erik Pearson ]
  • mod_authn_core: Allow 'es to be seen from auth stanzas under virtual hosts. PR 55622. [Eric Covener]
  • mod_proxy_fcgi: Use apr_socket_timeout_get instead of hard-coded 30 seconds timeout. [Jan Kaluza]
  • mod_proxy: Added support for unix domain sockets as the backend server endpoint [Jim Jagielski, Blaise Tarr ]
  • build: only search for modules (config*.m4) in known subdirectories, see build/config-stubs. [Stefan Fritsch]
  • mod_cache_disk: Fix potential hangs on Windows when using mod_cache_disk. PR 55833. [Eric Covener]
  • mod_ssl: Add support for OpenSSL configuration commands by introducing the SSLOpenSSLConfCmd directive. [Stephen Henson, Kaspar Brand]
  • mod_proxy: Remove (never documented) syntax which is equivalent to . [Christophe Jaillet]
  • mod_authz_user, mod_authz_host, mod_authz_groupfile, mod_authz_dbm, mod_authz_dbd, mod_authnz_ldap: Support the expression parser within the require directives. [Graham Leggett]
  • mod_proxy_http: Core dumped under high load. PR 50335. [Jan Kaluza ]
  • mod_socache_shmcb.c: Remove arbitrary restriction on shared memory size previously limited to 64MB. [Jens Låås ]
  • mod_lua: Use binary copy when dealing with uploads through r:parsebody() to prevent truncating files. [Daniel Gruno]

New in Apache HTTP Server 2.4.7 (Jul 17, 2015)

  • APR 1.5.0 or later is now required for the event MPM.
  • slotmem_shm: Error detection.
  • event: Use skiplist data structure.
  • mpm_unix: Add ap_mpm_podx_* implementation to avoid code duplication and align w/ trunk.
  • Fix potential rejection of valid MaxMemFree and ThreadStackSize directives.
  • mod_proxy_fcgi: Remove 64K limit on encoded length of all envvars. An individual envvar with an encoded length of more than 16K will be omitted.
  • mod_proxy_fcgi: Handle reading protocol data that is split between packets.
  • mod_ssl: Improve handling of ephemeral DH and ECDH keys by allowing custom parameters to be configured via SSLCertificateFile, and by adding standardized DH parameters for 1024/2048/3072/4096 bits. Unless custom parameters are configured, the standardized parameters are applied based on the certificate's RSA/DSA key size.
  • mod_ssl, configure: Require OpenSSL 0.9.8a or later.
  • mod_ssl: drop support for export-grade ciphers with ephemeral RSA keys, and unconditionally disable aNULL, eNULL and EXP ciphers (not overridable via SSLCipherSuite).
  • Add experimental cmake-based build system for Windows.
  • event MPM: Fix possible crashes (third party modules accessing c->sbh) or occasional missed mod_status updates for some keepalive requests under load.
  • mod_authn_socache: Support optional initialization arguments for socache providers.
  • mod_session: Reset the max-age on session save. PR 47476.
  • mod_session: After parsing the value of the header specified by the SessionHeader directive, remove the value from the response. PR 55279.
  • mod_headers: Allow for format specifiers in the substitution string when using Header edit.
  • mod_dav: dav_resource->uri is treated as unencoded. This was an unnecessary ABI changed introduced in 2.4.6. PR 55397.
  • mod_dav: Don't require lock tokens for COPY source. PR 55306.
  • core: Don't truncate output when sending is interrupted by a signal, such as from an exiting CGI process. PR 55643.
  • WinNT MPM: Exit the child if the parent process crashes or is terminated.
  • Windows: Correct failure to discard stderr in some error log configurations. (Error message AH00093)
  • mod_session_crypto: Allow using exec: calls to obtain session encryption key.
  • core: Add missing Reason-Phrase in HTTP response headers. PR 54946.
  • mod_rewrite: Make rewrite websocket-aware to allow proxying. PR 55598.
  • mod_ldap: When looking up sub-groups, use an implicit objectClass=* instead of an explicit cn=* filter.
  • ab: Add wait time, fix processing time, and output write errors only if they occured.
  • worker MPM: Don't forcibly kill worker threads if the child process is exiting gracefully.
  • core: apachectl -S prints wildcard name-based virtual hosts twice. PR54948
  • mod_auth_basic: Add AuthBasicUseDigestAlgorithm directive to allow migration of passwords from digest to basic authentication.
  • ab: Add a new -l parameter in order not to check the length of the responses. This can be usefull with dynamic pages. PR9945, PR27888, PR42040 [] Suppress formatting of startup messages written to the console when ErrorLogFormat is used.
  • mod_auth_digest: Be more specific when the realm mismatches because the realm has not been specified.
  • mod_proxy: Add a note in the balancer manager stating whether changes will or will not be persisted and whether settings are inherited.
  • mod_cache: Avoid a crash with strcmp() when the hostname is not provided.
  • core: Add util_fcgi.h and associated definitions and support routines for FastCGI, based largely on mod_proxy_fcgi.
  • mod_headers: Add 'Header note header-name note-name' for copying a response headers value into a note.
  • mod_headers: Add 'setifempty' command to Header and RequestHeader.
  • mod_logio: new format-specifier %S (sum) which is the sum of received and sent byte counts. PR54015
  • mod_deflate: Improve error detection when decompressing request bodies with trailing garbage: handle case where trailing bytes are in the same bucket.
  • mod_authz_groupfile, mod_authz_user: Reduce severity of AH01671 and AH01663 from ERROR to DEBUG, since these modules do not know what mod_authz_core is doing with their AUTHZ_DENIED return value.
  • mod_ldap: add TRACE5 for LDAP retries. [Eric Covener]
  • mod_ldap: retry on an LDAP timeout during authn. [Eric Covener]
  • mod_ldap: Change "LDAPReferrals off" to actually set the underlying LDAP SDK option to OFF, and introduce "LDAPReferrals default" to take the SDK default, sans rebind authentication callback.
  • core: Log a message at TRACE1 when the client aborts a connection.
  • WinNT MPM: Don't crash during child process initialization if the Listen protocol is unrecognized.
  • modules: Fix some compiler warnings.
  • Sync 2.4 and trunk
  • mod_filter: Add "change=no" as a proto-flag to FilterProtocol to remove a providers initial flags set at registration time.
  • core, mod_ssl: Enable the ability for a module to reverse the sense of a poll event from a read to a write or vice versa. This is a step on the way to allow mod_ssl taking full advantage of the event MPM.
  • Makefile.win: Install proper pcre DLL file during debug build install. PR 55235.]
  • mod_ldap: Fix a potential memory leak or corruption. PR 54936.
  • ab: Fix potential buffer overflows when processing the T and X command-line options. PR 55360.
  • fcgistarter: Specify SO_REUSEADDR to allow starting a server with old connections in TIME_WAIT.
  • core: Add open_htaccess hook which, in conjunction with dirwalk_stat and post_perdir_config (introduced in 2.4.5), allows mpm-itk to be used without patches to httpd core.
  • support/htdbm: fix processing of -t command line switch. Regression introduced in 2.4.4 PR 55264

New in Apache HTTP Server 2.4.6 (Jul 17, 2015)

  • Revert a broken fix for PR54948 that was applied to 2.4.5 (which was not released) and found post-2.4.5 tagging.

New in Apache HTTP Server 2.2.25 (Jul 22, 2013)

  • SECURITY: CVE-2013-1896 (cve.mitre.org) mod_dav: Sending a MERGE request against a URI handled by mod_dav_svn with the source href (sent as part of the request body as XML) pointing to a URI that is not configured for DAV will trigger a segfault
  • SECURITY: CVE-2013-1862 (cve.mitre.org) mod_rewrite: Ensure that client data written to the RewriteLog is escaped to prevent terminal escape sequences from entering the log file
  • core: Limit ap_pregsub() to 64MB and add ap_pregsub_ex() for longer strings. The default limit for ap_pregsub() can be adjusted at compile time by defining AP_PREGSUB_MAXLEN
  • core: Support the SINGLE_LISTEN_UNSERIALIZED_ACCEPT optimization on Linux kernel versions 3.x and above. PR 55121
  • mod_setenvif: Log error on substitution overflow
  • mod_ssl/proxy: enable the SNI extension for backend TLS connections
  • mod_proxy: Use the the same hostname for SNI as for the HTTP request when forwarding to SSL backends
  • mod_ssl: Quiet FIPS mode weak keys disabled and FIPS not selected emits in the error log to debug level
  • mod_ssl: Catch missing, mismatched or encrypted client cert/key pairs with SSLProxyMachineCertificateFile/Path directives
  • mod_proxy_balancer: Added balancer parameter failontimeout to allow server admin to configure an IO timeout as an error in the balancer
  • mod_authnz_ldap: Allow using exec: calls to obtain LDAP bind password
  • htdigest: Fix buffer overflow when reading digest password file with very long lines
  • mod_dav: Ensure URI is correctly uriencoded on return
  • mod_dav: Make sure that when we prepare an If URL for Etag comparison, we compare unencoded paths
  • mod_dav: Sending an If or If-Match header with an invalid ETag doesn't result in a 412 Precondition Failed for a COPY operation
  • mod_dav: When a PROPPATCH attempts to remove a non-existent dead property on a resource for which there is no dead property in the same namespace httpd segfaults
  • mod_dav: Do not fail PROPPATCH when prop namespace is not known
  • mod_dav: Do not segfault on PROPFIND with a zero length DBM

New in Apache HTTP Server 2.2.22 (Feb 1, 2012)

  • Reject requests where the request-URI does not match the HTTP specification, preventing unexpected expansion of target URLs in some reverse proxy configurations. [Joe Orton]
  • Fix integer overflow in ap_pregsub() which, when the mod_setenvif module is enabled, could allow local users to gain privileges via a .htaccess file. [Stefan Fritsch, Greg Ames]
  • Resolve additional cases of URL rewriting with ProxyPassMatch or RewriteRule, where particular request-URIs could result in undesired backend network exposure in some configurations. [Joe Orton]
  • mod_log_config: Fix segfault (crash) when the '%{cookiename}C' log format string is in use and a client sends a nameless, valueless cookie, causing a denial of service. The issue existed since version 2.2.17. PR 52256. [Rainer Canavan ]
  • Fix scoreboard issue which could allow an unprivileged child process could cause the parent to crash at shutdown rather than terminate cleanly. [Joe Orton]
  • Fix an issue in error responses that could expose "httpOnly" cookies when no custom ErrorDocument is specified for status code 400. [Eric Covener]
  • mod_proxy_ajp: Try to prevent a single long request from marking a worker in error. [Jean-Frederic Clere]
  • config: Update the default mod_ssl configuration: Disable SSLv2, only allow >= 128bit ciphers, add commented example for speed optimized cipher list, limit MSIE workaround to MSIE

New in Apache HTTP Server 2.2.21 (Sep 17, 2011)

  • SECURITY: CVE-2011-3348 (cve.mitre.org) mod_proxy_ajp: Respond with HTTP_NOT_IMPLEMENTED when the method is not recognized. [Jean-Frederic Clere]
  • Fix a regression introduced by the CVE-2011-3192 byterange fix in 2.2.20. PR 51748. []
  • mod_filter: Instead of dropping the Accept-Ranges header when a filter registered with AP_FILTER_PROTO_NO_BYTERANGE is present, set the header value to "none". [Eric Covener, Ruediger Pluem]
  • mod_proxy_ajp: Ignore flushing if headers have not been sent. PR 51608 [Ruediger Pluem]
  • mod_dav_fs: Fix segfault if apr DBM driver cannot be loaded. PR 51751. [Stefan Fritsch]
  • mod_alias: Adjust log severity of "incomplete redirection target" message. PR 44020.
  • mod_rewrite: Check validity of each internal (int:) RewriteMap even if the RewriteEngine is disabled in server context, avoiding a crash while referencing the invalid int: map at runtime. PR 50994. [Ben Noordhuis ]
  • core: Allow MaxRanges none|unlimited|default and set 'Accept-Ranges: none' in the case Ranges are being ignored with MaxRanges none. [Eric Covener]
  • mod_proxy_ajp: Respect "reuse" flag in END_REPONSE packets. [Rainer Jung]

New in Apache HTTP Server 2.2.20 (Aug 31, 2011)

  • SECURITY: CVE-2011-3192 (cve.mitre.org)
  • core: Fix handling of byte-range requests to use less memory, to avoid denial of service. If the sum of all ranges in a request is larger than the original file, ignore the ranges and send the complete file. PR 51714.
  • mod_authnz_ldap: If the LDAP server returns constraint violation,
  • don't treat this as an error but as "auth denied".
  • mod_filter: Fix FilterProvider conditions of type "resp=" (response headers) for CGI.
  • mod_reqtimeout: Fix a timed out connection going into the keep-alive state after a timeout when discarding a request body. PR 51103.
  • core: Do the hook sorting earlier so that the hooks are properly sorted for the pre_config hook and during parsing the config.

New in Apache HTTP Server 2.2.19 (May 22, 2011)

  • Revert ABI breakage in 2.2.18 caused by the function signature change of ap_unescape_url_keep2f(). This release restores the signature from 2.2.17 and prior, and introduces ap_unescape_url_keep2f_ex().

New in Apache HTTP Server 2.2.18 (May 12, 2011)

  • coding: utf-8 -*- Changes with Apache 2.2.18
  • Log an error for failures to read a chunk-size, and return 408 instead 413 when this is due to a read timeout. This change also fixes some cases of two error documents being sent in the response for the same scenario. [Eric Covener] PR49167
  • core: Only log a 408 if it is no keepalive timeout. PR 39785 [Ruediger Pluem, Mark Montague ]
  • core: Treat timeout reading request as 408 error, not 400. Log 408 errors in access log as was done in Apache 1.3.x. PR 39785 [Nobutaka Mantani , Stefan Fritsch, Dan Poirier]
  • Core HTTP: disable keepalive when the Client has sent Expect: 100-continue but we respond directly with a non-100 response. Keepalive here led to data from clients continuing being treated as a new request. PR 47087. [Nick Kew]
  • htpasswd: Change the default algorithm for htpasswd to MD5 on all platforms. Crypt with its 8 character limit is not useful anymore; improve out of disk space handling (PR 30877); print a warning if a password is truncated by crypt. [Stefan Fritsch]
  • mod_win32: Added shebang check for '! so that .vbs scripts work as CGI. Win32's cscript interpreter can only use a single quote as comment char. [Guenter Knauf]
  • configure: Fix htpasswd/htdbm libcrypt link errors with some newer linkers. [Stefan Fritsch]
  • MinGW build improvements. PR 49535. [John Vandenberg , Jeff Trawick]
  • mod_ssl, ab: Support OpenSSL compiled without SSLv2 support. [Stefan Fritsch]
  • core: AllowEncodedSlashes new option NoDecode to allow encoded slashes in request URL path info but not decode them. PR 35256, PR 46830. [Dan Poirier]
  • mod_rewrite: Allow to unset environment variables. PR 50746. [Rainer Jung]
  • suEXEC: Add Suexec directive to disable suEXEC without renaming the binary (Suexec Off), or force startup failure if suEXEC is required but not supported (Suexec On). [Jeff Trawick]
  • mod_proxy: Put the worker in error state if the SSL handshake with the backend fails. PR 50332. [Daniel Ruggeri , Ruediger Pluem]
  • prefork: Update MPM state in children during a graceful restart. Allow the HTTP connection handling loop to terminate early during a graceful restart. PR 41743. [Andrew Punch ]
  • mod_ssl: Correctly read full lines in input filter when the line is incomplete during first read. PR 50481. [Ruediger Pluem]
  • mod_autoindex: Merge IndexOptions from server to directory context when the directory has no mod_autoindex directives. PR 47766. [Eric Covener]
  • mod_cache: Make sure that we never allow a 304 Not Modified response that we asked for to leak to the client should the 304 response be uncacheable. PR45341 [Graham Leggett]
  • mod_dav: Send 400 error if malformed Content-Range header is received for a put request (RFC 2616 14.16). PR 49825. [Stefan Fritsch]
  • mod_userdir: Add merging of enable, disable, and filename arguments to UserDir directive, leaving enable/disable of userlists unmerged. PR 44076 [Eric Covener]
  • core: Honor 'AcceptPathInfo OFF' during internal redirects, such as per-directory mod_rewrite substitutions. PR 50349. [Eric Covener]
  • mod_cache: Check the request to determine whether we are allowed to return cached content at all, and respect a "Cache-Control: no-cache" header from a client. Previously, "no-cache" would behave like "max-age=0". [Graham Leggett]
  • mod_mem_cache: Add a debug msg when a streaming response exceeds MCacheMaxStreamingBuffer, since mod_cache will follow up with a scary 'memory allocation failed' debug message. PR 49604. [Eric Covener]
  • proxy_connect: Don't give up in the middle of a CONNECT tunnel when the child process is starting to exit. PR50220. [Eric Covener]

New in Apache HTTP Server 2.2.17 (Oct 18, 2010)

  • prefork MPM: Run cleanups for final request when process exits gracefully to work around a flaw in apr-util.
  • mod_reqtimeout: Do not wrongly enforce timeouts for mod_proxy's backend connections and other protocol handlers (like mod_ftp). Enforce the timeout for AP_MODE_GETLINE. If there is a timeout, shorten the lingering close time from 30 to 2 seconds.
  • Proxy balancer: support setting error status according to HTTP response code from a backend.
  • mod_authnz_ldap: If AuthLDAPCharsetConfig is set, also convert the password to UTF-8. PR 45318.
  • core: check symlink ownership if both FollowSymlinks and SymlinksIfOwnerMatch are set
  • core: fix origin checking in SymlinksIfOwnerMatch
  • mod_headers: Enable multi-match-and-replace edit option
  • mod_log_config: Make ${cookie}C correctly match whole cookie names instead of substrings.
  • mod_dir, mod_negotiation: Pass the output filter information to newly created sub requests; as these are later on used as true requests with an internal redirect. This allows for mod_cache et.al. to trap the results of the redirect.
  • rotatelogs: Fix possible buffer overflow if admin configures a mongo log file path.
  • mod_ssl: Do not do overlapping memcpy.
  • vhost: A purely-numeric Host: header should not be treated as a port.
  • core: (re)-introduce -T commandline option to suppress documentroot check at startup.

New in Apache HTTP Server 2.2.16 (Jul 29, 2010)

  • SECURITY: CVE-2010-1452
  • mod_dav, mod_cache: Fix Handling of requests without a path segment.
  • SECURITY: CVE-2010-2068
  • mod_proxy_ajp, mod_proxy_http, mod_reqtimeout: Fix timeout detection
  • for platforms Windows, Netware and OS2. PR: 49417.
  • core: Filter init functions are now run strictly once per request before handler invocation. The init functions are no longer run for connection filters. PR 49328. [Joe Orton]
  • mod_filter: enable it to act on non-200 responses. PR 48377 [Nick Kew]
  • mod_ldap: LDAP caching was suppressed (and ldap-status handler returns
  • title page only) when any mod_ldap directives were used in VirtualHost context. [Eric Covener]
  • mod_ssl: Fix segfault at startup if proxy client certs are shared across multiple vhosts. PR 39915. [Joe Orton]
  • mod_proxy_http: Log the port of the remote server in various messages. PR 48812.
  • apxs: Fix -A and -a options to ignore whitespace in httpd.conf
  • mod_dir: add FallbackResource directive, to enable admin to specify an action to happen when a URL maps to no file, without resorting to ErrorDocument or mod_rewrite. PR 47184 [Nick Kew]
  • mod_rewrite: Allow to set environment variables without explicitely giving a value. [Rainer Jung]

New in Apache HTTP Server 2.2.15 (Jul 29, 2010)

  • SECURITY: CVE-2009-3555
  • mod_ssl: Comprehensive fix of the TLS renegotiation prefix injection attack when compiled against OpenSSL version 0.9.8m or later. Introduces the 'SSLInsecureRenegotiation' directive to reopen this vulnerability and offer unsafe legacy renegotiation with clients which do not yet support the new secure renegotiation protocol, RFC 5746.
  • SECURITY: CVE-2009-3555
  • mod_ssl: A partial fix for the TLS renegotiation prefix injection attack by rejecting any client-initiated renegotiations. Forcibly disable keepalive for the connection if there is any buffered data readable. Any configuration which requires renegotiation for per-directory/location access control is still vulnerable, unless using OpenSSL >= 0.9.8l.
  • SECURITY: CVE-2010-0408
  • mod_proxy_ajp: Respond with HTTP_BAD_REQUEST when the body is not sent
  • when request headers indicate a request body is incoming; not a case of
  • HTTP_INTERNAL_SERVER_ERROR.
  • SECURITY: CVE-2010-0425
  • mod_isapi: Do not unload an isapi .dll module until the request processing is completed, avoiding orphaned callback pointers.
  • SECURITY: CVE-2010-0434
  • Ensure each subrequest has a shallow copy of headers_in so that the parent request headers are not corrupted. Elimiates a problematic optimization in the case of no request body. PR 48359
  • mod_reqtimeout: New module to set timeouts and minimum data rates for
  • receiving requests from the client.
  • mod_proxy_ajp: Really regard the operation a success, when the client aborted the connection. In addition adjust the log message if the client
  • aborted the connection.
  • mod_negotiation: Preserve query string over multiviews negotiation.
  • This buglet was fixed for type maps in 2.2.6, but the same issue affected multiviews and was overlooked.
  • PR 33112
  • mod_cache: Introduce the thundering herd lock, a mechanism to keep the flood of requests at bay that strike a backend webserver as a cached entity goes stale.
  • mod_proxy_http: Make sure that when an ErrorDocument is served from a reverse proxied URL, that the subrequest respects the status of the original request. This brings the behaviour of proxy_handler in line with default_handler. PR 47106.
  • mod_log_config: Add the R option to log the handler used within the request.
  • mod_include: Allow fine control over the removal of Last-Modified and ETag headers within the INCLUDES filter, making it possible to cache responses if desired. Fix the default value of the SSIAccessEnable directive.
  • mod_ssl: Fix a potential I/O hang if a long list of trusted CAs is configured for client cert auth. PR 46952.
  • core: Fix potential memory leaks by making sure to not destroy bucket brigades that have been created by earlier filters.
  • mod_authnz_ldap: Add AuthLDAPBindAuthoritative to allow Authentication to
  • try other providers in the case of an LDAP bind failure.
  • mod_proxy, mod_proxy_http: Support remote https proxies by using HTTP CONNECT.
  • worker: Don't report server has reached MaxClients until it has.
  • Add message when server gets within MinSpareThreads of MaxClients.
  • mod_ssl: When extracting certificate subject/issuer names to the SSL_*_DN_* variables, handle RDNs with duplicate tags by exporting multiple varialables with an "_n" integer suffix.
  • mod_authnz_ldap: Failures to map a username to a DN, or to check a user
  • password now result in an informational level log entry instead of warning level.
  • core: Preserve Port information over internal redirects
  • mod_filter: fix FilterProvider matching where "dispatch" string doesn't exist.
  • Build: fix --with-module to work as documented
  • mod_mime: Make RemoveType override the info from TypesConfig.
  • mod_proxy: unable to connect to a backend is SERVICE_UNAVAILABLE, rather than BAD_GATEWAY or (especially) NOT_FOUND.
  • mod_charset_lite: Honor 'CharsetOptions NoImplicitAdd'.
  • mod_ldap: If LDAPSharedCacheSize is too small, try harder to purge some cache entries and log a warning. Also increase the default LDAPSharedCacheSize to 500000. This is a more realistic size suitable
  • for the default values of 1024 for LdapCacheEntries/LdapOpCacheEntries.
  • mod_disk_cache, mod_mem_cache: don't cache incomplete responses, per RFC 2616, 13.8.
  • mod_rewrite: Make sure that a hostname:port isn't fully qualified if the request is a CONNECT request. PR 47928
  • mod_cache: correctly consider s-maxage in cacheability decisions.
  • core: Return APR_EOF if request body is shorter than the length announced
  • by the client.
  • mod_rewrite: Add scgi scheme detection.
  • mod_mime: Detect invalid use of MultiviewsMatch inside Location and
  • LocationMatch sections. PR 47754.
  • ab, mod_ssl: Restore compatibility with OpenSSL < 0.9.7g.

New in Apache HTTP Server 2.2.14 (Oct 6, 2009)

  • SECURITY: CVE-2009-2699
  • Fixed in APR 1.3.9. Faulty error handling in the Solaris pollset support Event Port backend) which could trigger hangs in the prefork and event MPMs on that platform. PR 47645. [Jeff Trawick]
  • SECURITY: CVE-2009-3095 (cve.mitre.org)mod_proxy_ftp: sanity check authn credentials. Stefan Fritsch, Joe Orton]
  • SECURITY: CVE-2009-3094 (cve.mitre.org) mod_proxy_ftp: NULL pointer dereference on error paths. Stefan Fritsch, Joe Orton]
  • mod_proxy_scgi: Backport from trunk. [André Malo]
  • mod_ldap: Don't try to resolve file-based user ids to a DN when AuthLDAPURL
  • has been defined at a very high level. PR 45946. [Eric Covener]
  • htcacheclean: 19 ways to fail, 1 error message. Fixed. [Graham Leggett]
  • mod_ldap: Bring the LDAPCacheEntries and LDAPOpCacheEntries usage() in synch with the manual and the implementation (0 and -1 both disable the cache). [Eric Covener]
  • mod_ssl: The error message when SSLCertificateFile is missing should at least give the name or position of the problematic virtual host definition. [Stefan Fritsch]
  • htdbm: Fix possible buffer overflow if dbm database has very long values. PR 30586 [Dan Poirier]
  • Add support for HTTP PUT to ab. [Jeff Barnes]
  • mod_ssl: Fix SSL_*_DN_UID variables to use the 'userID' attribute type. PR 45107. [Michael Ströder, Peter Sylvester]
  • mod_cache: Add CacheIgnoreURLSessionIdentifiers directive to ignore
  • defined session identifiers encoded in the URL when caching. Ruediger Pluem]
  • mod_mem_cache: fix seg fault under load due to pool concurrency problem
  • PR: 47672 [Dan Poirier]
  • mod_autoindex: Correctly create an empty cell if the description for a file is missing. PR 47682 [Peter Poeml]

New in Apache HTTP Server 2.2.13 (Aug 11, 2009)

  • SECURITY: CVE-2009-2412
  • Distributed with APR 1.3.8 and APR-util 1.3.9 to fix potential overflow in pools and rmm, where size alignment was taking place. [Matt Lewis, Sander Striker]
  • mod_ssl, ab: improve compatibility with OpenSSL 1.0.0 betas. Report warnings compiling mod_ssl against OpenSSL to the httpd developers. [Guenter Knauf]
  • mod_cgid: Do not add an empty argument when calling the CGI script. PR 46380 [Ruediger Pluem]
  • Fix potential segfaults with use of the legacy ap_rputs() etc interfaces, in cases where an output filter fails. PR 36780. [Joe Orton]

New in Apache HTTP Server 2.2.12 (Aug 11, 2009)

  • SECURITY: CVE-2009-1891
  • Fix a potential Denial-of-Service attack against mod_deflate or other modules, by forcing the server to consume CPU time in compressing a large file after a client disconnects. PR 39605.[Joe Orton, Ruediger Pluem]
  • SECURITY: CVE-2009-1195
  • Prevent the "Includes" Option from being enabled in an .htaccess file if the AllowOverride restrictions do not permit it. [Jonathan Peatfield, Joe Orton, Ruediger Pluem, Jeff Trawick]
  • SECURITY: CVE-2009-1890
  • Fix a potential Denial-of-Service attack against mod_proxy in a reverse proxy configuration, where a remote attacker can force a proxy process to consume CPU time indefinitely. [Nick Kew, Joe Orton]
  • SECURITY: CVE-2009-1191
  • mod_proxy_ajp: Avoid delivering content from a previous request which failed to send a request body. PR 46949 [Ruediger Pluem]
  • SECURITY: CVE-2009-0023, CVE-2009-1955, CVE-2009-1956
  • The bundled copy of the APR-util library has been updated, fixing three different security issues which may affect particular configurations and third-party modules.
  • mod_include: fix potential segfault when handling back references on an empty SSI variable. [Ruediger Pluem, Lars Eilebrecht, Nick Kew]
  • mod_alias: check sanity in Redirect arguments.
  • PR 44729 [Sönke Tesch, Jim Jagielski]
  • mod_proxy_http: fix Host: header for literal IPv6 addresses.
  • PR 47177 [Carlos Garcia Braschi ]
  • mod_rewrite: Remove locking for writing to the rewritelog.
  • PR 46942
  • mod_alias: Ensure Redirect emits HTTP-compliant URLs.
  • PR 44020
  • mod_proxy_http: fix case sensitivity checking transfer encoding
  • PR 47383 [Ryuzo Yamamoto]
  • mod_rewrite: Fix the error string returned by RewriteRule.
  • RewriteRule returned "RewriteCond: bad flag delimiters" when the 3rd argument of RewriteRule was not started with "[" or not ended with "]".
  • PR 45082 [Vitaly Polonetsky]
  • mod_proxy: Complete ProxyPassReverse to handle balancer URL's. Given;
  • BalancerMember balancer://alias http://example.com/foo
  • ProxyPassReverse /bash balancer://alias/bar
  • backend url http://example.com/foo/bar/that is now translated /bash/that
  • [William Rowe]
  • New piped log syntax: Use "||process args" to launch the given process without invoking the shell/command interpreter. Use "|$command line"
  • the default behavior of "|command line" in 2.2) to invoke using shell, consuming an additional shell process for the lifetime of the logging pipe program but granting additional process invocation flexibility. [William Rowe]
  • mod_ssl: Add server name indication support (RFC 4366) and better support for name based virtual hosts with SSL. PR 34607 [Peter Sylvester, Kaspar Brand, Guenter Knauf, Joe Orton, Ruediger Pluem]
  • mod_negotiation: Escape pathes of filenames in 406 responses to avoid
  • HTML injections and HTTP response splitting. PR 46837.[Geoff Keating]
  • mod_include: Prevent a case of SSI timefmt-smashing with filter chains
  • including multiple INCLUDES filters. PR 39369 [Joe Orton]
  • mod_rewrite: When evaluating a proxy rule in directory context, do escape the filename by default. PR 46428 [Joe Orton]
  • mod_proxy_ajp: Check more strictly that the backend follows the AJP protocol. [Mladen Turk]
  • mod_ssl: Add SSLProxyCheckPeerExpire and SSLProxyCheckPeerCN directives
  • to enable stricter checking of remote server certificates. [Ruediger Pluem]
  • mod_substitute: Fix a memory leak. PR 44948 [Dan Poirier]
  • mod_proxy_ajp: Forward remote port information by default.[Rainer Jung]
  • mod_disk_cache/mod_mem_cache: Fix handling of CacheIgnoreHeaders
  • directive to correctly remove headers before storing them.[Lars Eilebrecht]
  • mod_deflate: revert changes in 2.2.8 that caused an invalid etag to be emitted for on-the-fly gzip content-encoding.
  • PR 39727 will require larger fixes and this fix was far more harmful than the original code. PR 45023. [Roy T. Fielding]
  • mod_disk_cache: The module now turns off sendfile support if EnableSendfile off' is defined globally. PR 41218. [Lars Eilebrecht, Issac Goldstand]
  • prefork: Fix child process hang during graceful restart/stop in configurations with multiple listening sockets. PR 42829. [Joe Orton, Jeff Trawick]
  • mod_ssl: Add SSLRenegBufferSize directive to allow changing the size of the buffer used for the request-body where necessary during a per-dir renegotiation. PR 39243. [Joe Orton]
  • mod_rewrite: Introduce DiscardPathInfo|DPI flag to stop the troublesome way that per-directory rewrites append the previous notion of PATH_INFO to each substitution before evaluating subsequent rules.
  • PR38642 [Eric Covener]
  • mod_authnz_ldap: Reduce number of initialization debug messages and make information more clear. PR 46342 [Dan Poirier]
  • mod_cache: Introduce 'no-cache' per-request environment variable to prevent the saving of an otherwise cacheable response.[Eric Covener]
  • core: Translate the status line to ASCII on EBCDIC platforms in ap_send_interim_response() and for locally generated "100 Continue"
  • responses. [Eric Covener]
  • CGI: return 504 (Gateway timeout) rather than 500 when a script times out before returning status line/headers.
  • PR 42190 [Nick Kew]
  • prefork: Log an error instead of segfaulting when child startup fails due to pollset creation failures. PR 46467. [Jeff Trawick]
  • mod_ext_filter: fix error handling when the filter prog fails to start, and introduce an onfail configuration option to abort the request or to remove the broken filter and continue.
  • PR 41120 [Nick Kew]
  • mod_include: support generating non-ASCII characters as entities in SSI
  • PR 25202 [Nick Kew]
  • core/utils: Enhance ap_escape_html API to support escaping non-ASCII chars
  • [Nick Kew]
  • mod_rewrite: fix "B" flag breakage by reverting r589343
  • PR 45529 [Bob Ionescu]
  • mod_cgid: fix segfault problem on solaris.
  • PR 39332 [Masaoki Kobayashi, Jeff Trawick]
  • mod_ldap: Avoid a segfault when result->rc is checked in uldap_connection_init
  • when result is NULL. This could happen if LDAP initialization failed.
  • PR 45994. [Dan Poirier]
  • Set Listen protocol to "https" if port is set to 443 and no proto is specified
  • as documented but not implemented). PR 46066 [Dan Poirier]
  • mod_cache: Correctly save Content-Encoding of cachable entity. PR 46401
  • Dan Poirier]
  • Output -M and -S dumps (modules and vhosts) to stdout instead of stderr.
  • PR 42571 and PR 44266 (dup). [Dan Poirier]
  • mod_cache: When an explicit Expires or Cache-Control header is set, cache
  • normally non-cacheable response statuses. PR 46346.[Alex Polvi]

New in Apache HTTP Server 2.2.11 (Dec 14, 2008)

  • core: When the ap_http_header_filter processes an error bucket, cleanup
  • the passed brigade before returning AP_FILTER_ERROR down the filter
  • chain. This unambiguously ensures the same error bucket isn't revisited
  • [Ruediger Pluem]
  • core: Error responses set by filters were being coerced into 500 errors,
  • sometimes appended to the original error response. Log entry of:
  • 'Handler for (null returned invalid result code -3'
  • [Eric Covener]
  • configure: Don't reject libtool 2.x
  • PR 44817 [Arfrever Frehtes Taifersar Arahesis ]
  • mod_autoindex: add configuration option to insert string
  • in HTML HEAD (IndexHeadInsert. [Nick Kew]
  • Add new LogFormat parameter, %k, which logs the number of
  • keepalive requests on this connection for this request.
  • PR 45762 [Dan Poirier , Jim Jagielski]
  • Export and install the mod_rewrite.h header to ensure the optional
  • rewrite_mapfunc_t and ap_register_rewrite_mapfunc functions are
  • available to third party modules. [Graham Leggett]
  • mod_cache: Convert age of cached object to seconds before comparing it to
  • age supplied by the request when checking whether to send a Warning
  • header for a stale response. PR 39713. [Owen Taylor ]
  • Build: Correctly set SSL_LIBS during openssl detection if pkgconfig is
  • not available. PR 46018 [Ruediger Pluem]
  • mod_proxy_ajp: Do not fail if response data is sent before all request
  • data is read. PR 45911 [Ruediger Pluem]
  • mod_proxy_balancer: Add in forced recovery for balancer members if
  • all are in error state. [Mladen Turk]
  • mod_proxy: Prevent segmentation faults by correctly adjusting the
  • lifetime of the buckets read from the proxy backend. PR 45792
  • [Ruediger Pluem]
  • mod_expires: Do not sets negative max-age / Expires header in the past.
  • PR 39774 [Jim Jagielski]
  • mod_info: Was displaying the wrong value for the KeepAliveTimeout
  • value. [Jim Jagielski]
  • mod_proxy_ajp: Fix wrongly formatted requests where client
  • sets Content-Length header, but doesn't provide a body.
  • Servlet container always expects that next packet is
  • body whenever C-L is present in the headers. This can lead
  • to wrong interpretation of the packets. In this case
  • send the empty body packet, so container can deal with
  • that. [Mladen Turk]
  • core: Add ap_timeout_parameter_parse to public API. [Ruediger Pluem]
  • mod_proxy: Add the possibility to set the worker parameters
  • connectiontimeout and ping in milliseconds. [Ruediger Pluem]
  • Worker MPM: Crosscheck that idle workers are still available before using
  • them and thus preventing an overflow of the worker queue which causes
  • a SegFault. PR 45605 [Denis Ustimenko ]
  • Windows: Always build the odbc dbd driver on windows, to be consistent
  • with the apr-util default. [Tom Donovan]

New in Apache HTTP Server 2.2.10 (Oct 25, 2008)

  • SECURITY: CVE-2008-2939 (cve.mitre.org) mod_proxy_ftp: Prevent XSS attacks when using wildcards in the path of the FTP URL. Discovered by Marc Bevand of Rapid7.
  • Allow for smax to be 0 for balancer members so that all idle connections are able to be dropped should they exceed ttl.PR 43371
  • mod_proxy_http: Don't trigger a retry by the client if a failure to read the response line was the result of a timeout.
  • Support chroot on Unix-family platforms
  • mod_ssl: implement dynamic mutex callbacks for the benefit of OpenSSL.
  • mod_proxy_balancer: Add 'bybusyness' load balance method.
  • mod_authn_alias: Detect during startup when AuthDigestProvider is configured to use an incompatible provider via AuthnProviderAlias.
  • mod_proxy: Add 'scolonpathdelim' parameter to allow for ';' to also be used as a session path separator/delim
  • mod_charset_lite: Avoid dropping error responses by handling meta buckets correctly.
  • mod_proxy_http: Introduce environment variable proxy-initial-not-pooled to avoid reusing pooled connections if the client connection is an initial connnection.
  • mod_rewrite: Allow Cookie option to set secure and HttpOnly flag
  • mod_ssl: Rewrite shmcb to avoid memory alignment issues.
  • mod_proxy: Add connectiontimeout parameter for proxy workers in order to be able to set the timeout for connecting to the backend separately.
  • mod_dav_fs: Retrieve minimal system information about directory entries when walking a DAV fs, resolving a performance degradation on Windows.
  • mod_cgid: Pass along empty command line arguments from an ISINDEX query that has consecutive '+' characters in the QUERY_STRING matching the behavior of mod_cgi.
  • mod_headers: Prevent Header edit from processing only the first header of possibly multiple headers with the same name and deleting the remaining ones.
  • mod_proxy_balancer: Move nonce field in the balancer manager page inside the html form where it belongs.
  • mod_proxy_http: Do not forward requests with 'Expect: 100-continue' to known HTTP/1.0 servers. Return 'Expectation failed' (417) instead.
  • mod_rewrite: Preserve the query string when [proxy,noescape]. PR 45247.

New in Apache HTTP Server 2.2.8 (Jan 21, 2008)

  • core: Fix regression in 2.2.7 in chunk filtering with massively chunked requests.
  • winnt_mpm: Resolve modperl issues by redirecting console mode stdout to /Device/Nul as the server is starting up, mirroring unix MPM's.
  • winnt_mpm: Restore Win32DisableAcceptEx On directive and Win9x platform by recreating the bucket allocator each time the trans pool is cleared.
  • mod_dav: Fix evaluation of If-Match * and If-None-Match * conditionals.

New in Apache HTTP Server 2.2.3 (Jan 3, 2007)

  • Smart Filtering, Improved Caching, AJP Proxy, Proxy Load Balancing, Graceful Shutdown support, Large File Support, the Event MPM, and refactored Authentication/Authorization.