]> git.ipfire.org Git - thirdparty/httpx.git/commitdiff
HTTP/2 support for tunnelled proxy cases. (#2009)
authorTom Christie <tom@tomchristie.com>
Wed, 5 Jan 2022 16:01:47 +0000 (16:01 +0000)
committerGitHub <noreply@github.com>
Wed, 5 Jan 2022 16:01:47 +0000 (16:01 +0000)
* Cap upload chunk sizes

* Use '.read' for file streaming, where possible

* Direct iteration should not apply chunk sizes

* HTTP/2 support for proxies

httpx/_transports/default.py

index c8525adcfc34fd84fd7c6b9417d3584a081f3dfc..bfb0333d4e8c47c3a28eae51aa8d10ad088c70ea 100644 (file)
@@ -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__()