From edfac364000f3a8a57b4703a7f4e35433b756008 Mon Sep 17 00:00:00 2001 From: Joren Vrancken Date: Tue, 12 Sep 2023 20:23:56 +0200 Subject: [PATCH] Pass arguments from instance dict to urlopen in HTTPAdapter.send --- src/requests/adapters.py | 45 +++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 24 deletions(-) diff --git a/src/requests/adapters.py b/src/requests/adapters.py index ad476fabb9..08dbee615f 100644 --- a/src/requests/adapters.py +++ b/src/requests/adapters.py @@ -154,6 +154,8 @@ def __init__( self.init_poolmanager(pool_connections, pool_maxsize, block=pool_block) + self.urllib3_response_options = {} + def __getstate__(self): return {attr: getattr(self, attr, None) for attr in self.__attrs__} @@ -431,14 +433,7 @@ def proxy_headers(self, proxy): return headers def send( - self, - request, - stream=False, - timeout=None, - verify=True, - cert=None, - proxies=None, - **response_kwargs, + self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None ): """Sends PreparedRequest object. Returns Response object. @@ -453,7 +448,6 @@ def send( must be a path to a CA bundle to use :param cert: (optional) Any user-provided SSL certificate to be trusted. :param proxies: (optional) The proxies dictionary to apply to the request. - :param response_kwargs: (optional) Additional arguments passed to HTTPConnectionPool.urlopen. :rtype: requests.Response """ @@ -463,7 +457,6 @@ def send( raise InvalidURL(e, request=request) self.cert_verify(conn, request.url, verify, cert) - url = self.request_url(request, proxies) self.add_headers( request, stream=stream, @@ -489,21 +482,25 @@ def send( else: timeout = TimeoutSauce(connect=timeout, read=timeout) + urlopen_kwargs = self.urllib3_response_options.copy() + urlopen_kwargs.update( + { + "method": request.method, + "url": self.request_url(request, proxies), + "body": request.body, + "headers": request.headers, + "redirect": False, + "assert_same_host": False, + "preload_content": False, + "decode_content": False, + "retries": self.max_retries, + "timeout": timeout, + "chunked": chunked, + } + ) + try: - resp = conn.urlopen( - method=request.method, - url=url, - body=request.body, - headers=request.headers, - redirect=False, - assert_same_host=False, - preload_content=False, - decode_content=False, - retries=self.max_retries, - timeout=timeout, - chunked=chunked, - **response_kwargs, - ) + resp = conn.urlopen(**urlopen_kwargs) except (ProtocolError, OSError) as err: raise ConnectionError(err, request=request)