From: Tom Christie Date: Wed, 5 Jan 2022 16:01:47 +0000 (+0000) Subject: HTTP/2 support for tunnelled proxy cases. (#2009) X-Git-Tag: 0.21.2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=406700317bfd83a65d78094e4ce8e9261c284399;p=thirdparty%2Fhttpx.git HTTP/2 support for tunnelled proxy cases. (#2009) * Cap upload chunk sizes * Use '.read' for file streaming, where possible * Direct iteration should not apply chunk sizes * HTTP/2 support for proxies --- diff --git a/httpx/_transports/default.py b/httpx/_transports/default.py index c8525adc..bfb0333d 100644 --- a/httpx/_transports/default.py +++ b/httpx/_transports/default.py @@ -138,19 +138,36 @@ class HTTPTransport(BaseTransport): retries=retries, ) else: - self._pool = httpcore.HTTPProxy( - proxy_url=httpcore.URL( - scheme=proxy.url.raw_scheme, - host=proxy.url.raw_host, - port=proxy.url.port, - target=proxy.url.raw_path, - ), - proxy_headers=proxy.headers.raw, - ssl_context=ssl_context, - max_connections=limits.max_connections, - max_keepalive_connections=limits.max_keepalive_connections, - keepalive_expiry=limits.keepalive_expiry, - ) + try: + self._pool = httpcore.HTTPProxy( + proxy_url=httpcore.URL( + scheme=proxy.url.raw_scheme, + host=proxy.url.raw_host, + port=proxy.url.port, + target=proxy.url.raw_path, + ), + proxy_headers=proxy.headers.raw, + ssl_context=ssl_context, + max_connections=limits.max_connections, + max_keepalive_connections=limits.max_keepalive_connections, + keepalive_expiry=limits.keepalive_expiry, + http1=http1, + http2=http2, + ) + except TypeError: # pragma: nocover + self._pool = httpcore.HTTPProxy( + proxy_url=httpcore.URL( + scheme=proxy.url.raw_scheme, + host=proxy.url.raw_host, + port=proxy.url.port, + target=proxy.url.raw_path, + ), + proxy_headers=proxy.headers.raw, + ssl_context=ssl_context, + max_connections=limits.max_connections, + max_keepalive_connections=limits.max_keepalive_connections, + keepalive_expiry=limits.keepalive_expiry, + ) def __enter__(self: T) -> T: # Use generics for subclass support. self._pool.__enter__()