summaryrefslogtreecommitdiff
path: root/modules/http2/h2_version.h
Commit message (Collapse)AuthorAgeFilesLines
* *) mod_http2: v2.0.15 with the following fixes and improvementsStefan Eissing2023-05-121-2/+2
| | | | | | | | | | | | | | | | | | | | | | | - New directive 'H2EarlyHint name value' to add headers to a response, picked up already when a "103 Early Hints" response is sent. 'name' and 'value' must comply to the HTTP field restrictions. This directive can be repeated several times and header fields of the same names add. Sending a 'Link' header with 'preload' relation will also cause a HTTP/2 PUSH if enabled and supported by the client. - Fixed an issue where requests were not logged and accounted in a timely fashion when the connection returns to "keepalive" handling, e.g. when the request served was the last outstanding one. This led to late appearance in access logs with wrong duration times reported. - Accurately report the bytes sent for a request in the '%O' Log format. This addresses #203, a long outstanding issue where mod_h2 has reported numbers over-eagerly from internal buffering and not what has actually been placed on the connection. The numbers are now the same with and without H2CopyFiles enabled. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1909769 13f79535-47bb-0310-9956-ffa450edef68
* *) mod_http2: new directive 'H2MaxDataFrameLen n' to limit the maximumStefan Eissing2023-02-161-2/+2
| | | | | | | | | | | | | amount of response body bytes put into a single HTTP/2 DATA frame. Setting this to 0 places no limit (but the max size allowed by the protocol is observed). The module, by default, tries to use the maximum size possible, which is somewhat around 16KB. This sets the maximum. When less response data is available, smaller frames will be sent. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1907697 13f79535-47bb-0310-9956-ffa450edef68
* *) mod_http2: deny protocol upgrade if the request has a chunked-encoded body.Stefan Eissing2023-02-161-2/+2
| | | | git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1907696 13f79535-47bb-0310-9956-ffa450edef68
* *) mod_http2: field values (headers and trailers) are stripped ofStefan Eissing2022-10-221-2/+2
| | | | | | | | | | | | | leading/trailing whitespace (space +htab) before being processed or send in a response. This is compatible behaviour to HTTP/1.1 parsers that strip incoming headers of such characters. [Stefan Eissing] - removed intermittent "H2HeaderStrictness" directive again. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1904777 13f79535-47bb-0310-9956-ffa450edef68
* Sync with v2.0.10 from github:Stefan Eissing2022-10-111-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Extensive testing in production done by Alessandro Bianchi (@alexskynet) on the v2.0.x versions for stability. Many thanks! * refactored stream response handling to reflect the different phases (response/data/trailers) more clearly and help resolving cpu busy loops. * Adding more negative tests for handling of errored responses to cover edge cases. * mod_http2: fixed handling of response where neiter an EOS nor an ERROR was received as a cause to reset the stream. * mod_proxy_http2: generating error buckets for fault response bodies, to signal failure to fron when response header were already sent. v2.0.9 -------------------------------------------------------------------------------- * Fixed a bug where errors during reponse body handling did not lead to a proper RST_STREAM. Instead processing went into an infinite loop. Extended test cases to catch this condition. v2.0.8 -------------------------------------------------------------------------------- * Delaying input setup of a stream just before processing starts. This allows any EOS indicator arriving from the client before that to take effect. Without knowing that a stream has no input, internal processing has to simulate chunked encoding. This is not wrong, but somewhat more expensive and mod_security has been reported to be allergic to seeing 'chunked' on some requests. See <https://bz.apache.org/bugzilla/show_bug.cgi?id=66282>. * 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. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1904522 13f79535-47bb-0310-9956-ffa450edef68
* *) mod_http2: synchronization with github sources.Stefan Eissing2022-09-271-2/+2
| | | | | | | | | Building in trunk and against 2.4.x is now supported via AP_HAS_RESPONSE_BUCKETS defines. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1904305 13f79535-47bb-0310-9956-ffa450edef68
* *) mod_http2: new directive "H2HeaderStrictness" to control the complianceStefan Eissing2022-09-261-2/+2
| | | | | | | | | | | | | | | | level of header checks as defined in the HTTP/2 RFCs. Default is 7540. 9113 activates the checks for forbidden leading/trailing whitespace in field values (available from nghttp2 v1.50.0 on). - source sync with github version - fix for keepalive idle wait in mpm_worker setup - ensuring EOS when secondary connection has been handled - fixed race in late input EOS arrival when stream was already scheduled for execution. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1904269 13f79535-47bb-0310-9956-ffa450edef68
* * When reaching server limits, such as MaxRequestsPerChild, the HTTP/2 ↵Stefan Eissing2021-12-091-2/+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. No changes-entries, since this fix is proposed for backport on the 1.15.x module codebase in 2.4.x in a separate PR. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1895724 13f79535-47bb-0310-9956-ffa450edef68
* *) mod_http2: fixed a bug in v2.0.0 that could lead to an infiniteStefan Eissing2021-12-061-2/+2
| | | | | | | | | | loop when clients close connections prematurely. Enhanced the scoreboard status updates on h2 connections for mod_status. 'server-status' now gives a better idea what the connection is working on. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1895614 13f79535-47bb-0310-9956-ffa450edef68
* *) mod_http2:Stefan Eissing2021-10-121-2/+2
| | | | | | | | | | | | | | | | | | | | | | - Fixed an issue since 1.15.24 that "Server" headers in proxied requests were overwritten instead of preserved. [PR by @daum3ns] - Added directove 'H2StreamTimeout' to configure a separate value for HTTP/2 streams, overriding server's 'Timeout' configuration. [rpluem] - HTTP/2 connections now use pollsets to monitor the status of the ongoing streams and their main connection when host OS allows this. - Removed work-arounds for older versions of libnghttp2 and checking during configure that at least version 1.15.0 is present. - The HTTP/2 connection state handler, based on an experiment and draft at the IETF http working group (abandoned for some time), has been removed. - H2SerializeHeaders no longer has an effect. A warning is logged when it is set to "on". The switch enabled the internal writing of requests to be parsed by the internal HTTP/1.1 protocol handler and was introduced to avoid potential incompatibilities during the introduction of HTTP/2. - Removed the abort/redo of tasks when mood swings lower the active limit. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1894163 13f79535-47bb-0310-9956-ffa450edef68
* * mod_http2: fix version suffix after sync with githubStefan Eissing2021-09-231-1/+1
| | | | | | | | | Make shutdown worker wait loop robust against timed wait interruptions and report the correct seconds waited. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1893563 13f79535-47bb-0310-9956-ffa450edef68
* * Switch to using OpenSSL EVP_* API to avoid deprecation warnings withStefan Eissing2021-09-101-2/+2
| | | | | | | | OpenSSL 3.0. [@notroj] git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1893220 13f79535-47bb-0310-9956-ffa450edef68
* * mod_http2: when a server is restarted gracefully, any idle h2 workerStefan Eissing2021-09-101-2/+2
| | | | | | | | threads are shut down immediately. [Stefan Eissing] git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1893214 13f79535-47bb-0310-9956-ffa450edef68
* * mod_http2: Stefan Eissing2021-07-151-2/+2
| | | | | | | | | | - Added a timeout to h2 worker cleanup to exit latest after 5 seconds of waiting on idle workers to terminate. This happens after all connections have been processed. a WARNING is logged in case workers lagged behind. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1891566 13f79535-47bb-0310-9956-ffa450edef68
* *) mod_http2:Stefan Eissing2021-07-061-2/+2
| | | | | | | | | | | | | | | | | - Aborting requests via RST_STREAM no longer affect the available resources of a connection when the first chunk of the response body has been sent. - H2Min/MaxWorkers behave as intended again. The module will initially create H2MinWorkers threads and add up to H2MaxWorkers when needed. These additional workers time out when idle after H2MaxWorkerIdleSeconds and disappear again. - When the shutdown of a child is detected (e.g. graceful shutdown), the module will terminate all idle workers above H2MinWorkers right away. This detection currently only happens when a HTTP/2 connection is active. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1891312 13f79535-47bb-0310-9956-ffa450edef68
* mod_htt2: fix incomplete sync with latest changes in github, adjust version ↵Stefan Eissing2021-04-231-2/+2
| | | | | | number. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1889119 13f79535-47bb-0310-9956-ffa450edef68
* mod_htt2, synch with changes from github module version:Stefan Eissing2021-02-221-2/+3
| | | | | | | | | - logio: improvements to reporting of sent bytes for http2 responses - directive H2OutputBuffering, controls if any output should be sent immediately. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1886792 13f79535-47bb-0310-9956-ffa450edef68
* *) mod_http2: remote support for abandoned http-wg draftStefan Eissing2020-07-291-2/+2
| | | | | | | | <https://datatracker.ietf.org/doc/draft-kazuho-h2-cache-digest/>. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1880395 13f79535-47bb-0310-9956-ffa450edef68
* *) mod_http2: Stefan Eissing2020-07-131-1/+1
| | | | | | | | | | | | Fixes <https://github.com/icing/mod_h2/issues/200>: "LimitRequestFields 0" now disables the limit, as documented. Fixes <https://github.com/icing/mod_h2/issues/201>: Do not count repeated headers with same name against the field count limit. The are merged internally, as if sent in a single HTTP/1 line. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879832 13f79535-47bb-0310-9956-ffa450edef68
* *) mod_proxy_http2: the "ping" proxy parameter Stefan Eissing2020-06-031-2/+2
| | | | | | | | | | | | (see <https://httpd.apache.org/docs/2.4/mod/mod_proxy.html>) is now used when checking the liveliness of a new or reused h2 connection to the backend. With short durations, this makes load-balancing more responsive. The module will hold back requests until ping conditions are met, using features of the HTTP/2 protocol alone. [Ruediger Pluem, Stefan Eissing] git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1878433 13f79535-47bb-0310-9956-ffa450edef68
* Axe an empty line to synch with 2.4.xChristophe Jaillet2020-05-231-1/+0
| | | | | | [skip ci] git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1878060 13f79535-47bb-0310-9956-ffa450edef68
* *) mod_http2: Fixes issue where mod_unique_id would generate non-unique ↵Stefan Eissing2020-03-021-2/+2
| | | | | | | | | | | request identifier under load, see <https://github.com/icing/mod_h2/issues/195>. [Michael Kaufmann, Stefan Eissing] git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1874689 13f79535-47bb-0310-9956-ffa450edef68
* *) mod_http2: Fixed rare cases where a h2 worker could deadlock the main ↵Stefan Eissing2019-12-191-2/+2
| | | | | | connection. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1871810 13f79535-47bb-0310-9956-ffa450edef68
* mod_http2: update log tags, log field len errors at INFO level (via mkaufmann)Stefan Eissing2019-07-171-2/+2
| | | | | | | | mod_proxy_http2: udpate log tags git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1863221 13f79535-47bb-0310-9956-ffa450edef68
* *) mod_http2/mpm_event: Fixes the behaviour when a HTTP/2 connection has ↵Stefan Eissing2019-07-031-2/+2
| | | | | | | | | | | | nothing more to write with streams ongoing (flow control block). The timeout waiting for the client to send WINODW_UPDATE was incorrectly KeepAliveTimeout and not Timeout as it should be. Fixes PR 63534. [Yann Ylavic, Stefan Eissing] git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1862475 13f79535-47bb-0310-9956-ffa450edef68
* * mod_http2: adding support for the new trailer tests.Stefan Eissing2019-06-141-2/+2
| | | | git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1861338 13f79535-47bb-0310-9956-ffa450edef68
* * modules/http2: more copying of data to disentangle worker processing from ↵Stefan Eissing2019-05-281-2/+2
| | | | | | main connection git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1860260 13f79535-47bb-0310-9956-ffa450edef68
* * modules/http2: reverting r1859724, as no good.Stefan Eissing2019-05-281-2/+2
| | | | git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1860257 13f79535-47bb-0310-9956-ffa450edef68
* *) mod_http2: internal code cleanups and simplifications. Common output ↵Stefan Eissing2019-05-221-2/+2
| | | | | | | | | | code for h2 and h2c protocols, using nested mutex locks for simplified calls. [Stefan Eissing] git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1859724 13f79535-47bb-0310-9956-ffa450edef68
* *) mod_http2: new configuration directive: ```H2Padding numbits``` to control Stefan Eissing2019-03-071-2/+2
| | | | | | | | | | | | | | | | | | | | 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] git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1854963 13f79535-47bb-0310-9956-ffa450edef68
* *) mod_http2/mod_proxy_http2: proxy_http2 checks correct master connection ↵Stefan Eissing2019-02-261-2/+2
| | | | | | | | | | | | | | | | | 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] git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1854365 13f79535-47bb-0310-9956-ffa450edef68
* * inc http2 version number to distinguish to github released versionStefan Eissing2019-01-281-2/+2
| | | | | | | | * further disentangle streama and request memory pools git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1852341 13f79535-47bb-0310-9956-ffa450edef68
* *) mod_http2: Configuration directoves H2Push and H2Upgrade can now be ↵Stefan Eissing2019-01-281-2/+2
| | | | | | | | | | | | | | 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] git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1852339 13f79535-47bb-0310-9956-ffa450edef68
* mod_http2: mergine trunk+2.4.x code divergences back into a single source ↵Stefan Eissing2018-12-191-2/+2
| | | | | | with proper MMN checks. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1849296 13f79535-47bb-0310-9956-ffa450edef68
* mod_http2: version bump, slave connections cleanup strategy changedStefan Eissing2018-11-081-2/+2
| | | | git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1846125 13f79535-47bb-0310-9956-ffa450edef68
* mod_http2: adding defensive code for stream EOS handling, in case the ↵Stefan Eissing2018-10-101-2/+2
| | | | | | | | | | | | request handler missed to signal it the normal way (eos buckets). Addresses github issues https://github.com/icing/mod_h2/issues/164, https://github.com/icing/mod_h2/issues/167 and https://github.com/icing/mod_h2/issues/170. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1843426 13f79535-47bb-0310-9956-ffa450edef68
* mod_http2: bringing some signed/unsigned casting goodness, aligning with ↵Stefan Eissing2018-10-101-2/+2
| | | | | | github mod-h2 again git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1843424 13f79535-47bb-0310-9956-ffa450edef68
* On the trunk:Stefan Eissing2018-09-041-2/+2
| | | | | | | | | | mod_http2: connection IO event handling reworked. Instead of reacting on incoming bytes, the state machine now acts on incoming frames that are affecting it. This reduces state transitions. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1840010 13f79535-47bb-0310-9956-ffa450edef68
* http2 version stepStefan Eissing2018-05-091-2/+2
| | | | git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1831230 13f79535-47bb-0310-9956-ffa450edef68
* On the trunk:Stefan Eissing2018-04-301-2/+2
| | | | | | | | | mod_http2: adding an abort function to slave connections' pools, so out-of-memory events lead to a control process abort, as on HTTP/1.x connections. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1830534 13f79535-47bb-0310-9956-ffa450edef68
* On the trunk:Stefan Eissing2018-04-281-2/+2
| | | | | | | | | | mod_http2: adding regular memory cleanup when transferring large response bodies. This reduces memory footprint and avoids memory exhaustion when transferring large files on 32-bit architectures. Fixes PR 62325. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1830419 13f79535-47bb-0310-9956-ffa450edef68
* On the trunk:Stefan Eissing2018-04-091-2/+2
| | | | | | | | | 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. See gituhub issue: https://github.com/icing/mod_h2/issues/158 git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1828687 13f79535-47bb-0310-9956-ffa450edef68
* On the trunk:Stefan Eissing2018-01-301-2/+2
| | | | | | | | mod_http2: removed obsolete stream detach code, no longer generating events in beam shutdown on pool destroy. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1822624 13f79535-47bb-0310-9956-ffa450edef68
* On the trunk:Stefan Eissing2018-01-291-2/+2
| | | | | | | | | mod_http2: discourage gzip/brotli content encoding on http2-status responses as they are inserted into the reponse when filters are already done. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1822502 13f79535-47bb-0310-9956-ffa450edef68
* On the trunk:Stefan Eissing2018-01-171-14/+15
| | | | | | | | mod_http2: removing comments that documented that greenbytes has untransferable copyright to the sources. The rights, of course, remain unaffected, but maybe some people can sleep better. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1821371 13f79535-47bb-0310-9956-ffa450edef68
* On the trunk:Stefan Eissing2017-11-061-2/+2
| | | | | | | | cleanup changes and mod_http2 version number after backport. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1814421 13f79535-47bb-0310-9956-ffa450edef68
* *) mod_http2: avoid unnecessary data retrieval for a trace log. Allow certainStefan Eissing2017-10-301-2/+2
| | | | | | | | information retrievals on null bucket beams where it makes sense. [Stefan Eissing] git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1813767 13f79535-47bb-0310-9956-ffa450edef68
* mod_http2: non-dev 1.10.12 for backportStefan Eissing2017-09-291-1/+1
| | | | git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1810089 13f79535-47bb-0310-9956-ffa450edef68
* On the trunk:Stefan Eissing2017-09-281-2/+2
| | | | | | | mod_http2: v0.10.12, removed optimization for mutex handling in bucket beams that could lead to assertion failure in edge cases. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1809981 13f79535-47bb-0310-9956-ffa450edef68
* bumping version, removing some unused code, fixes in base64url from mod_mdStefan Eissing2017-08-041-1/+1
| | | | git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1804096 13f79535-47bb-0310-9956-ffa450edef68