]> git.ipfire.org Git - thirdparty/apache/httpd.git/commit
backport of https://github.com/apache/httpd/pull/364
authorStefan Eissing <icing@apache.org>
Fri, 30 Jun 2023 07:22:40 +0000 (07:22 +0000)
committerStefan Eissing <icing@apache.org>
Fri, 30 Jun 2023 07:22:40 +0000 (07:22 +0000)
commit06ceb22deb88c144c199305278e8fb9325bee748
tree81ae0e064c587a231d6e8535a40ecefede33edf3
parent100c3f811c8cbc314d8ac513168f246ec3679b8f
backport of https://github.com/apache/httpd/pull/364

Merge 1907696,1907697 from trunk:

  *) 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.

Merge r1909769 from trunk (plus sync mod_http2.xml)

  *) 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.

Merge r1910157 from trunk

 * mod_proxy_http2: fixed using the wrong "bucket_alloc" from the backend
   connection when sending data on the frontend one. This caused crashes
   or infinite loops in rare situations.
 * mod_proxy_http2: fixed a bug in retry/response handling that could lead
   to wrong status codes or HTTP messages send at the end of response bodies
   exceeding the announced content-length.
 * mod_proxy_http2: fix retry handling to not leak temporary errors.
   On detecting that that an existing connection was shutdown by the other
   side, a 503 response leaked even though the request was retried on a
   fresh connection.
 * mod_http2: fixed a bug that did cleanup of consumed and pending buckets in
   the wrong order when a bucket_beam was destroyed.

Merge of 1910331,1910386,1910441 from trunk

  *) mod_http2: fixed a bug in flushing pending data on an already closed
     connection that could lead to a busy loop, preventing the HTTP/2 session
     to close down successfully. Fixed PR 66624.
     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.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1910699 13f79535-47bb-0310-9956-ffa450edef68
33 files changed:
STATUS
changes-entries/h2_early_hints_and_fixes.txt [new file with mode: 0644]
changes-entries/h2_flush_fix.txt [new file with mode: 0644]
changes-entries/h2_max_data_frame_len.txt [new file with mode: 0644]
changes-entries/h2_pr66646.txt [new file with mode: 0644]
changes-entries/h2_v2.0.18.txt [new file with mode: 0644]
docs/manual/mod/mod_http2.xml
modules/http2/h2_bucket_beam.c
modules/http2/h2_bucket_beam.h
modules/http2/h2_c1_io.c
modules/http2/h2_c1_io.h
modules/http2/h2_c2.c
modules/http2/h2_c2_filter.c
modules/http2/h2_config.c
modules/http2/h2_config.h
modules/http2/h2_conn_ctx.h
modules/http2/h2_headers.c
modules/http2/h2_mplx.c
modules/http2/h2_mplx.h
modules/http2/h2_proxy_session.c
modules/http2/h2_proxy_session.h
modules/http2/h2_request.c
modules/http2/h2_session.c
modules/http2/h2_session.h
modules/http2/h2_stream.c
modules/http2/h2_stream.h
modules/http2/h2_switch.c
modules/http2/h2_version.h
modules/http2/mod_proxy_http2.c
test/modules/http2/test_008_ranges.py
test/modules/http2/test_009_timing.py
test/modules/http2/test_107_frame_lengths.py
test/modules/http2/test_500_proxy.py