]> git.ipfire.org Git - thirdparty/apache/httpd.git/commit
*) mod_http2: version 2.0.10 of the module, synchronizing changes
authorStefan Eissing <icing@apache.org>
Mon, 9 Jan 2023 07:35:18 +0000 (07:35 +0000)
committerStefan Eissing <icing@apache.org>
Mon, 9 Jan 2023 07:35:18 +0000 (07:35 +0000)
commit9767274b884a110e9244f59f50bd31ff1cae2933
tree943df3b759c076d72d90e1dd2a892ecc2a7eb460
parentd83beb522e6748dc32d4ae6afc9002466aabd62a
  *) 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.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1906475 13f79535-47bb-0310-9956-ffa450edef68
100 files changed:
.gitignore
CMakeLists.txt
STATUS
changes-entries/http2_v2.txt [new file with mode: 0644]
modules/http2/config2.m4
modules/http2/h2.h
modules/http2/h2_alt_svc.c [deleted file]
modules/http2/h2_alt_svc.h [deleted file]
modules/http2/h2_bucket_beam.c
modules/http2/h2_bucket_beam.h
modules/http2/h2_bucket_eos.c
modules/http2/h2_c1.c [new file with mode: 0644]
modules/http2/h2_c1.h [new file with mode: 0644]
modules/http2/h2_c1_io.c [new file with mode: 0644]
modules/http2/h2_c1_io.h [moved from modules/http2/h2_conn_io.h with 63% similarity]
modules/http2/h2_c2.c [new file with mode: 0644]
modules/http2/h2_c2.h [new file with mode: 0644]
modules/http2/h2_c2_filter.c [moved from modules/http2/h2_from_h1.c with 60% similarity]
modules/http2/h2_c2_filter.h [moved from modules/http2/h2_from_h1.h with 52% similarity]
modules/http2/h2_config.c
modules/http2/h2_config.h
modules/http2/h2_conn.c [deleted file]
modules/http2/h2_conn.h [deleted file]
modules/http2/h2_conn_ctx.c [new file with mode: 0644]
modules/http2/h2_conn_ctx.h [new file with mode: 0644]
modules/http2/h2_conn_io.c [deleted file]
modules/http2/h2_ctx.c [deleted file]
modules/http2/h2_ctx.h [deleted file]
modules/http2/h2_filter.c [deleted file]
modules/http2/h2_filter.h [deleted file]
modules/http2/h2_headers.c
modules/http2/h2_headers.h
modules/http2/h2_mplx.c
modules/http2/h2_mplx.h
modules/http2/h2_protocol.c [moved from modules/http2/h2_h2.c with 72% similarity]
modules/http2/h2_protocol.h [moved from modules/http2/h2_h2.h with 57% similarity]
modules/http2/h2_proxy_session.c
modules/http2/h2_proxy_util.c
modules/http2/h2_proxy_util.h
modules/http2/h2_push.c
modules/http2/h2_push.h
modules/http2/h2_request.c
modules/http2/h2_request.h
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_task.c [deleted file]
modules/http2/h2_task.h [deleted file]
modules/http2/h2_util.c
modules/http2/h2_util.h
modules/http2/h2_version.h
modules/http2/h2_workers.c
modules/http2/h2_workers.h
modules/http2/mod_http2.c
modules/http2/mod_http2.dsp
modules/http2/mod_http2.h
modules/http2/mod_proxy_http2.c
test/conftest.py
test/modules/http2/conftest.py
test/modules/http2/env.py
test/modules/http2/htdocs/cgi/alive.json [new file with mode: 0644]
test/modules/http2/htdocs/cgi/hello.py
test/modules/http2/htdocs/cgi/mnot164.py
test/modules/http2/mod_h2test/mod_h2test.c
test/modules/http2/test_001_httpd_alive.py
test/modules/http2/test_002_curl_basics.py
test/modules/http2/test_003_get.py
test/modules/http2/test_004_post.py
test/modules/http2/test_005_files.py
test/modules/http2/test_006_assets.py
test/modules/http2/test_100_conn_reuse.py
test/modules/http2/test_101_ssl_reneg.py
test/modules/http2/test_102_require.py
test/modules/http2/test_103_upgrade.py
test/modules/http2/test_104_padding.py
test/modules/http2/test_105_timeout.py
test/modules/http2/test_106_shutdown.py
test/modules/http2/test_200_header_invalid.py
test/modules/http2/test_201_header_conditional.py
test/modules/http2/test_202_trailer.py
test/modules/http2/test_203_rfc9113.py [new file with mode: 0644]
test/modules/http2/test_300_interim.py
test/modules/http2/test_400_push.py
test/modules/http2/test_401_early_hints.py
test/modules/http2/test_500_proxy.py
test/modules/http2/test_501_proxy_serverheader.py
test/modules/http2/test_502_proxy_port.py
test/modules/http2/test_600_h2proxy.py
test/modules/http2/test_700_load_get.py
test/modules/http2/test_710_load_post_static.py
test/modules/http2/test_711_load_post_cgi.py
test/modules/http2/test_712_buffering.py
test/pyhttpd/conf.py
test/pyhttpd/config.ini.in
test/pyhttpd/env.py
test/pyhttpd/mod_aptest/mod_aptest.c [new file with mode: 0644]
test/pyhttpd/nghttp.py
test/pyhttpd/result.py