1
0
mirror of https://github.com/apache/httpd.git synced 2025-09-16 20:22:08 +03:00

39 Commits

Author SHA1 Message Date
Stefan Eissing
149f6c72d3 *) mod_http2: update to version 2.0.35
New directive `H2MaxStreamErrors` to control how much bad behaviour
     by clients is tolerated before the connection is closed.



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1927792 13f79535-47bb-0310-9956-ffa450edef68
2025-08-14 07:53:10 +00:00
Stefan Eissing
e1fe1d8505 *) mod_md: update to version 2.0.30
- Fixed bug in handling over long response headers. When the 64 KB limit
       of nghttp2 was exceeded, the request was not reset and the client was
       left hanging, waiting for it. Now the stream is reset.
     - Added new directive `H2MaxHeaderBlockLen` to set the limit on response
       header sizes.
     - Fixed handling of Timeout vs. KeepAliveTimeout when first request on a
       connection was reset.



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1924145 13f79535-47bb-0310-9956-ffa450edef68
2025-03-03 12:32:31 +00:00
Stefan Eissing
77ae6da62c *) mod_http2: new directive H2ProxyRequests on|off to enable handling
of HTTP/2 requests in a forward proxy configuration.
     General forward proxying is enabled via `ProxyRequests`. If the
     HTTP/2 protocol is also enabled for such a server/host, this new
     directive is needed in addition.



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1910656 13f79535-47bb-0310-9956-ffa450edef68
2023-06-28 11:22:49 +00:00
Stefan Eissing
3ed9d65b05 *) mod_http2: added support for bootstrapping WebSockets via HTTP/2, as
described in RFC 8441. A new directive 'H2WebSockets on|off' has been
     added. The feature is by default not enabled.
     As also discussed in the manual, this feature should work for setups
     using "ProxyPass backend-url upgrade=websocket" without further changes.
     Special server modules for WebSockets will have to be adapted,
     most likely, as the handling if IO events is different with HTTP/2.
     HTTP/2 WebSockets are supported on platforms with native pipes. This
     excludes Windows.



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1910507 13f79535-47bb-0310-9956-ffa450edef68
2023-06-20 12:01:09 +00:00
Stefan Eissing
bdd49d3845 *) mod_http2: v2.0.15 with the following fixes and improvements
- 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
2023-05-12 11:28:59 +00:00
Stefan Eissing
ff6b8026ac *) mod_http2: new directive 'H2MaxDataFrameLen n' to limit the maximum
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
2023-02-16 11:58:45 +00:00
Stefan Eissing
8b68438b2e *) mod_http2: field values (headers and trailers) are stripped of
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
2022-10-22 11:41:55 +00:00
Stefan Eissing
8476af1eb6 *) mod_http2: new directive "H2HeaderStrictness" to control the compliance
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
2022-09-26 12:29:47 +00:00
Stefan Eissing
ff2ed5d739 *) mod_http2: new implementation of h2 worker pool.
- 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
2022-06-17 09:24:57 +00:00
Stefan Eissing
6a355db082 *) mod_http2:
- 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
2021-10-12 13:34:01 +00:00
Stefan Eissing
309e083893 mod_htt2, synch with changes from github module version:
- 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
2021-02-22 14:11:09 +00:00
Stefan Eissing
9b3dd74c58 *) 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]



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1854963 13f79535-47bb-0310-9956-ffa450edef68
2019-03-07 09:41:15 +00:00
Stefan Eissing
a721d5cc9e *) mod_http2: Configuration directoves 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]



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1852339 13f79535-47bb-0310-9956-ffa450edef68
2019-01-28 10:27:08 +00:00
Yann Ylavic
30dfcf3241 mod_proxy: follow up to r1822849.
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
2018-02-01 14:42:07 +00:00
Stefan Eissing
eb0fb1c922 On the trunk:
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
2018-01-17 14:41:30 +00:00
Stefan Eissing
d645af686d On the trunk:
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
2017-03-19 10:31:48 +00:00
Stefan Eissing
728b6cde48 On the trunk:
*) 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
2017-01-08 20:11:27 +00:00
Stefan Eissing
85900b7fd8 On the trunk:
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
2016-12-31 13:11:59 +00:00
Stefan Eissing
fcdeaaec90 mod_http2: new directove H2EarlyPushes for enabled 103 interim responses
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1771015 13f79535-47bb-0310-9956-ffa450edef68
2016-11-23 18:13:06 +00:00
Stefan Eissing
d300afee34 mod_http2: H2PushResource directive for early pushing
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
2016-11-13 21:30:40 +00:00
Stefan Eissing
0f02a22dd3 mod_http2: new H2CopyFiles directive
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1753498 13f79535-47bb-0310-9956-ffa450edef68
2016-07-20 13:04:57 +00:00
Stefan Eissing
c80274fdca removed experimental++ H2* timeout directives, instead using normal Timeout and KeepAliveTimeout only
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1727590 13f79535-47bb-0310-9956-ffa450edef68
2016-01-29 14:17:12 +00:00
Stefan Eissing
cb8084064d new directive H2PushDiarySize, first simple apr_hash implementation of a 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
2016-01-11 17:12:24 +00:00
Stefan Eissing
7d209de21f rewrote http2 connection state handling, fixed keepalive timeout handling 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
2015-12-22 15:52:10 +00:00
Stefan Eissing
42891fce56 3 new timeout configuration directives for mod_http2
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1720801 13f79535-47bb-0310-9956-ffa450edef68
2015-12-18 14:45:18 +00:00
Stefan Eissing
5286b9bcaa mod_http2: returning idle connections back to the mpm in case of async mpm enabled
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1720172 13f79535-47bb-0310-9956-ffa450edef68
2015-12-15 14:25:43 +00:00
Stefan Eissing
6b3dc90629 adding include for older apr versions
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1716487 13f79535-47bb-0310-9956-ffa450edef68
2015-11-25 17:02:11 +00:00
Stefan Eissing
ef14549031 new directive H2PushPriority to define content-type based priorities on server pushed resources
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1716388 13f79535-47bb-0310-9956-ffa450edef68
2015-11-25 13:26:31 +00:00
Stefan Eissing
364b3f79c4 new directive H2Push on/off to en-/disable HTTP/2 server pushes. Server 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
2015-11-13 14:54:15 +00:00
Stefan Eissing
1de680cb5f http2 TLS record size handling configuration, improved output write frequency
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1710825 13f79535-47bb-0310-9956-ffa450edef68
2015-10-27 14:15:56 +00:00
Stefan Eissing
18e2dd1225 new ap_is_allowed_protocol() for testing configured protocols, added 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
2015-10-20 13:42:23 +00:00
Stefan Eissing
8e878dc842 changed H2Compliance to H2ModernTLSOnly, added description in module docs
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1708815 13f79535-47bb-0310-9956-ffa450edef68
2015-10-15 13:14:37 +00:00
Stefan Eissing
fcf41ff1dc mod_http2: new directive H2Compliance on/off, checking TLS protocol and cipher against RFC7540
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1708593 13f79535-47bb-0310-9956-ffa450edef68
2015-10-14 12:10:11 +00:00
Stefan Eissing
addc112a60 better connection state on ending sessions, improved default extra file config value depending on max workers per process
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1700514 13f79535-47bb-0310-9956-ffa450edef68
2015-09-01 12:11:00 +00:00
Stefan Eissing
5d6c9e84ab removed mod_h2 directives which were experimental and should not support any longer, changed H2Direct to only be enabled by default when not using TLS, conf. to rfc7540
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1697446 13f79535-47bb-0310-9956-ffa450edef68
2015-08-24 16:07:39 +00:00
Stefan Eissing
1a3158ad94 removed HackMpm and MaxWrite config directives, added dynamic write size behaviour according to recommendations from Ilya Grigorik similar to Apache Traffic Server
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1695920 13f79535-47bb-0310-9956-ffa450edef68
2015-08-14 14:07:43 +00:00
Stefan Eissing
1f0bb9e838 removed H2Engine directive
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1695885 13f79535-47bb-0310-9956-ffa450edef68
2015-08-14 12:56:21 +00:00
Stefan Eissing
c5ebe036e6 fix for detecting direct mode on a TLS connections
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1691582 13f79535-47bb-0310-9956-ffa450edef68
2015-07-17 14:52:11 +00:00
Stefan Eissing
8c27a4cd1b reworked mod_h2 donation checkin into build system, added documentation
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1690248 13f79535-47bb-0310-9956-ffa450edef68
2015-07-10 11:45:46 +00:00