From: Peter Lazorchak Date: Fri, 19 May 2023 10:38:18 +0000 (-0700) Subject: Ensure all WSGITransport environs have a SERVER_PROTOCOL (#2708) X-Git-Tag: 0.25.0~41 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=abb994c0c24b4899f1f7a39e460ef8572f7e4431;p=thirdparty%2Fhttpx.git Ensure all WSGITransport environs have a SERVER_PROTOCOL (#2708) --- diff --git a/httpx/_transports/wsgi.py b/httpx/_transports/wsgi.py index 33035ce5..a23d42c4 100644 --- a/httpx/_transports/wsgi.py +++ b/httpx/_transports/wsgi.py @@ -102,6 +102,7 @@ class WSGITransport(BaseTransport): "QUERY_STRING": request.url.query.decode("ascii"), "SERVER_NAME": request.url.host, "SERVER_PORT": str(port), + "SERVER_PROTOCOL": "HTTP/1.1", "REMOTE_ADDR": self.remote_addr, } for header_key, header_value in request.headers.raw: diff --git a/tests/test_wsgi.py b/tests/test_wsgi.py index ff3f24ed..a952da6a 100644 --- a/tests/test_wsgi.py +++ b/tests/test_wsgi.py @@ -173,3 +173,20 @@ def test_wsgi_server_port(url: str, expected_server_port: str) -> None: assert response.status_code == 200 assert response.text == "Hello, World!" assert server_port == expected_server_port + + +def test_wsgi_server_protocol(): + server_protocol = None + + def app(environ, start_response): + nonlocal server_protocol + server_protocol = environ["SERVER_PROTOCOL"] + start_response("200 OK", [("Content-Type", "text/plain")]) + return [b"success"] + + with httpx.Client(app=app, base_url="http://testserver") as client: + response = client.get("/") + + assert response.status_code == 200 + assert response.text == "success" + assert server_protocol == "HTTP/1.1"