diff options
author | Stefan Eissing <icing@apache.org> | 2022-02-17 11:06:31 +0100 |
---|---|---|
committer | Stefan Eissing <icing@apache.org> | 2022-02-17 11:06:31 +0100 |
commit | 6137cd7b74344f78b47d454749877c3e4839f0fc (patch) | |
tree | df3a88b2301dbdf1b02578ae0aab36df00105301 /test/modules/http2 | |
parent | * Change the logic to choose the maximum of both timeouts (front end socket, (diff) | |
download | apache2-6137cd7b74344f78b47d454749877c3e4839f0fc.tar.xz apache2-6137cd7b74344f78b47d454749877c3e4839f0fc.zip |
*) mod_http2: preserve the port number given in a HTTP/1.1
request that was Upgraded to HTTP/2. Fixes PR65881.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1898146 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'test/modules/http2')
-rw-r--r-- | test/modules/http2/htdocs/cgi/hello.py | 1 | ||||
-rw-r--r-- | test/modules/http2/test_502_proxy_port.py | 40 |
2 files changed, 41 insertions, 0 deletions
diff --git a/test/modules/http2/htdocs/cgi/hello.py b/test/modules/http2/htdocs/cgi/hello.py index 191acb2fed..9fb2eb689d 100644 --- a/test/modules/http2/htdocs/cgi/hello.py +++ b/test/modules/http2/htdocs/cgi/hello.py @@ -7,6 +7,7 @@ print() print("{") print(" \"https\" : \"%s\"," % (os.getenv('HTTPS', ''))) print(" \"host\" : \"%s\"," % (os.getenv('SERVER_NAME', ''))) +print(" \"port\" : \"%s\"," % (os.getenv('SERVER_PORT', ''))) print(" \"protocol\" : \"%s\"," % (os.getenv('SERVER_PROTOCOL', ''))) print(" \"ssl_protocol\" : \"%s\"," % (os.getenv('SSL_PROTOCOL', ''))) print(" \"h2\" : \"%s\"," % (os.getenv('HTTP2', ''))) diff --git a/test/modules/http2/test_502_proxy_port.py b/test/modules/http2/test_502_proxy_port.py new file mode 100644 index 0000000000..472f625ad5 --- /dev/null +++ b/test/modules/http2/test_502_proxy_port.py @@ -0,0 +1,40 @@ +import pytest + +from .env import H2Conf + + +class TestProxyPort: + + @pytest.fixture(autouse=True, scope='class') + def _class_scope(self, env): + conf = H2Conf(env, extras={ + 'base': [ + f'Listen {env.proxy_port}', + 'Protocols h2c http/1.1', + 'LogLevel proxy_http2:trace2 proxy:trace2', + ], + f'cgi.{env.http_tld}': [ + "Header unset Server", + "Header always set Server cgi", + ] + }) + conf.add_vhost_cgi(proxy_self=False, h2proxy_self=False) + conf.start_vhost(domains=[f"test1.{env.http_tld}"], port=env.proxy_port) + conf.add([ + 'Protocols h2c', + 'RewriteEngine On', + 'RewriteRule "^/(.*)$" "h2c://%{HTTP_HOST}/$1"[NC,P]', + 'ProxyPassMatch / "h2c://$1/"', + ]) + conf.end_vhost() + conf.install() + assert env.apache_restart() == 0 + + # Test PR 65881 + # h2c upgraded request via a dynamic proxy onto another port + def test_h2_502_01(self, env): + url = f'http://localhost:{env.http_port}/hello.py' + r = env.curl_get(url, 5, options=['--http2', + '--proxy', f'localhost:{env.proxy_port}']) + assert r.response['status'] == 200 + assert r.json['port'] == f'{env.http_port}' |