summaryrefslogtreecommitdiff
path: root/modules/http2/h2_config.c
Commit message (Collapse)AuthorAgeFilesLines
* *) mod_http2: v2.0.15 with the following fixes and improvementsStefan Eissing2023-05-121-0/+62
| | | | | | | | | | | | | | | | | | | | | | | - 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-0/+22
| | | | | | | | | | | | | 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: field values (headers and trailers) are stripped ofStefan Eissing2022-10-221-29/+0
| | | | | | | | | | | | | 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-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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: new directive "H2HeaderStrictness" to control the complianceStefan Eissing2022-09-261-0/+29
| | | | | | | | | | | | | | | | 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
* *) mod_http2: new implementation of h2 worker pool.Stefan Eissing2022-06-171-34/+30
| | | | | | | | | | | | | - O(1) cost at registration of connection processing producers - no limit on registered producers - join of ongoing work on unregister - callbacks to unlink dependencies into other h2 code - memory cleanup on workers deactivation (on idle timeouts) - idle_limit as apr_time_t instead of seconds git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1902005 13f79535-47bb-0310-9956-ffa450edef68
* *) mod_http2:Stefan Eissing2021-10-121-130/+68
| | | | | | | | | | | | | | | | | | | | | | - 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_htt2, synch with changes from github module version:Stefan Eissing2021-02-221-0/+24
| | | | | | | | | - 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: Fixed interaction with mod_reqtimeout. A loaded mod_http2 ↵Stefan Eissing2019-11-261-2/+1
| | | | | | | | | | | | | | | | was disabling the ssl handshake timeouts. Also, fixed a mistake of the last version that made `H2Direct` always `on`, irregardless of configuration. Found and reported by <Armin.Abfalterer@united-security-providers.ch> and <Marcial.Rion@united-security-providers.ch>. [Stefan Eissing] *) mod_http2: Multiple field length violations in the same request no longer cause several log entries to be written. [@mkauf] git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1870454 13f79535-47bb-0310-9956-ffa450edef68
* *) mod_http2: new configuration directive: ```H2Padding numbits``` to control Stefan Eissing2019-03-071-0/+36
| | | | | | | | | | | | | | | | | | | | 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: Configuration directoves H2Push and H2Upgrade can now be ↵Stefan Eissing2019-01-281-195/+437
| | | | | | | | | | | | | | 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: bringing some signed/unsigned casting goodness, aligning with ↵Stefan Eissing2018-10-101-3/+6
| | | | | | github mod-h2 again git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1843424 13f79535-47bb-0310-9956-ffa450edef68
* Fix some typos reported in PR 59998Christophe Jaillet2018-03-241-1/+1
| | | | | | | | Most add already been fixed when PR 59990 had been applied on trunk. Thx klemens git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1827669 13f79535-47bb-0310-9956-ffa450edef68
* mod_proxy: follow up to r1822849.Yann Ylavic2018-02-011-0/+24
| | | | | | | | | Get the help(er) of mod_http2 to determine how much connections should be handled in the reslist by default (i.e. max_threads). git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1822878 13f79535-47bb-0310-9956-ffa450edef68
* On the trunk:Stefan Eissing2018-01-171-15/+0
| | | | | | | | 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
* correct copyright/license headersJim Jagielski2017-12-151-0/+16
| | | | git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1818306 13f79535-47bb-0310-9956-ffa450edef68
* On the trunk:Stefan Eissing2017-03-191-12/+5
| | | | | | | | mod_http2: ripped out H2SessionExtraFiles directive, removed super special sender pool handling in bucket beams. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1787604 13f79535-47bb-0310-9956-ffa450edef68
* On the trunk:Stefan Eissing2017-01-211-1/+1
| | | | | | | | | | | | *) 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. [Yann Ylavic, Stefan Eissing] git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1779738 13f79535-47bb-0310-9956-ffa450edef68
* https://bz.apache.org/bugzilla/show_bug.cgi?id=58855Jim Jagielski2017-01-091-2/+2
| | | | | | | Optimize check for empty strings git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1778067 13f79535-47bb-0310-9956-ffa450edef68
* On the trunk:Stefan Eissing2017-01-081-16/+0
| | | | | | | | | *) mod_http2: streaming of request output now reacts timely to data from other streams becoming available. Same for new incoming requests. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1777907 13f79535-47bb-0310-9956-ffa450edef68
* On the trunk:Stefan Eissing2016-12-311-0/+16
| | | | | | | | | | | 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. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1776735 13f79535-47bb-0310-9956-ffa450edef68
* mod_http2: new directove H2EarlyPushes for enabled 103 interim responsesStefan Eissing2016-11-231-1/+25
| | | | git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1771015 13f79535-47bb-0310-9956-ffa450edef68
* mod_http2: fixes for compiler warningsStefan Eissing2016-11-141-0/+1
| | | | git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1769600 13f79535-47bb-0310-9956-ffa450edef68
* mod_http2: H2PushResource directive for early pushingStefan Eissing2016-11-131-6/+74
| | | | | | | mod_proxy_http2: Link header uris are reverse mapped git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1769550 13f79535-47bb-0310-9956-ffa450edef68
* mod_http2: AP_DEBUG_ASSERT changed to ap_assertStefan Eissing2016-10-261-1/+1
| | | | git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1766691 13f79535-47bb-0310-9956-ffa450edef68
* mod_http2: new H2CopyFiles directiveStefan Eissing2016-07-201-1/+24
| | | | git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1753498 13f79535-47bb-0310-9956-ffa450edef68
* new experimental http2 proxy module for h2: and h2c: proxy urlsStefan Eissing2016-02-081-0/+1
| | | | git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1729209 13f79535-47bb-0310-9956-ffa450edef68
* removed experimental++ H2* timeout directives, instead using normal Timeout ↵Stefan Eissing2016-01-291-57/+0
| | | | | | and KeepAliveTimeout only git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1727590 13f79535-47bb-0310-9956-ffa450edef68
* mod_http2: push diary to avoid duplicate pushes, cache-digest handling, ↵Stefan Eissing2016-01-151-1/+1
| | | | | | http2-status handler for stats about current http2 connection git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1724820 13f79535-47bb-0310-9956-ffa450edef68
* push diary work, introduction of N/P for cache digest handlingStefan Eissing2016-01-121-0/+6
| | | | git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1724206 13f79535-47bb-0310-9956-ffa450edef68
* new directive H2PushDiarySize, first simple apr_hash implementation of a ↵Stefan Eissing2016-01-111-0/+19
| | | | | | push diary that prevents duplicate pushes on a connection git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1724086 13f79535-47bb-0310-9956-ffa450edef68
* dynamic allocation of transfer file handles used to pass buckets to master ↵Stefan Eissing2016-01-051-28/+1
| | | | | | connection git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1723069 13f79535-47bb-0310-9956-ffa450edef68
* reworked synching of session shutdown with worker threads, workers now stick ↵Stefan Eissing2016-01-041-1/+1
| | | | | | to a session until no more reuqquest are tbd, keepalive handling revisited git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1722899 13f79535-47bb-0310-9956-ffa450edef68
* fixes after fuzzing tests, changed H2KeepAliveTimeout defaultStefan Eissing2015-12-301-1/+1
| | | | git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1722369 13f79535-47bb-0310-9956-ffa450edef68
* rewrote http2 connection state handling, fixed keepalive timeout handling ↵Stefan Eissing2015-12-221-10/+1
| | | | | | for async and sync MPMs, cleaned logging, improved scoreboard updates of http2 master connections git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1721417 13f79535-47bb-0310-9956-ffa450edef68
* when normal read timeout expires, http2 switches to its keepalive timeout, ↵Stefan Eissing2015-12-211-2/+2
| | | | | | on async mpms, connection resumes processing back to mpm git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1721187 13f79535-47bb-0310-9956-ffa450edef68
* 3 new timeout configuration directives for mod_http2Stefan Eissing2015-12-181-0/+57
| | | | git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1720801 13f79535-47bb-0310-9956-ffa450edef68
* correcting error messages, better str concat, provided by CJStefan Eissing2015-12-171-18/+9
| | | | git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1720501 13f79535-47bb-0310-9956-ffa450edef68
* mod_http2: returning idle connections back to the mpm in case of async mpm ↵Stefan Eissing2015-12-151-1/+10
| | | | | | enabled git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1720172 13f79535-47bb-0310-9956-ffa450edef68
* saving some bytes and cycles by not create h2_ctx for every connection and ↵Stefan Eissing2015-12-141-7/+9
| | | | | | checking for c->master in the hooks git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1719881 13f79535-47bb-0310-9956-ffa450edef68
* removing weight from H2PushPriority with dependency 'before' as on stream ↵Stefan Eissing2015-12-071-1/+3
| | | | | | close, priorities would not be as before otherwise git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1718400 13f79535-47bb-0310-9956-ffa450edef68
* adding include for older apr versionsStefan Eissing2015-11-251-0/+1
| | | | git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1716487 13f79535-47bb-0310-9956-ffa450edef68
* new directive H2PushPriority to define content-type based priorities on ↵Stefan Eissing2015-11-251-22/+98
| | | | | | server pushed resources git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1716388 13f79535-47bb-0310-9956-ffa450edef68
* fixes races during session shutdown when connection is abortedStefan Eissing2015-11-231-1/+1
| | | | git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1715833 13f79535-47bb-0310-9956-ffa450edef68
* chaning WINDOW_SIZE default to protocol default, avoid sending the default ↵Stefan Eissing2015-11-161-16/+17
| | | | | | value as SETTINGS git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1714560 13f79535-47bb-0310-9956-ffa450edef68
* new directive H2Push on/off to en-/disable HTTP/2 server pushes. Server ↵Stefan Eissing2015-11-131-0/+24
| | | | | | pushes are recognized by Link: headers in responses that carry the rel=preload parameter git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1714219 13f79535-47bb-0310-9956-ffa450edef68
* rework of output handling on stream/session close, rework of cleartext ↵Stefan Eissing2015-11-031-2/+2
| | | | | | (http:) output to pass buckets to core filters, splitting of stream/io memory pools for stability and less sync git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1712300 13f79535-47bb-0310-9956-ffa450edef68
* http2 TLS record size handling configuration, improved output write frequencyStefan Eissing2015-10-271-0/+38
| | | | git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1710825 13f79535-47bb-0310-9956-ffa450edef68
* new ap_is_allowed_protocol() for testing configured protocols, added ↵Stefan Eissing2015-10-201-12/+36
| | | | | | H2Upgrade on/off directive, changed H2Direct default back to on when h2c is in Protocols git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1709587 13f79535-47bb-0310-9956-ffa450edef68
* changed H2Compliance to H2ModernTLSOnly, added description in module docsStefan Eissing2015-10-151-11/+11
| | | | git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1708815 13f79535-47bb-0310-9956-ffa450edef68