From 326049c8bbabd9ec8e3aa42ebf263dd0aa153057 Mon Sep 17 00:00:00 2001 From: Joffrey F Date: Mon, 19 Oct 2015 16:55:49 -0700 Subject: Fix Unix adapter bug with newer versions of requests The select_proxy utility in requests errors out when the provided URL doesn't have a hostname, like is the case when using a UNIX socket. Since proxies are an irrelevant notion in the case of UNIX sockets anyway, we simply return the path URL directly. Signed-off-by: Joffrey F --- docker/unixconn/unixconn.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/docker/unixconn/unixconn.py b/docker/unixconn/unixconn.py index 551bd29..d7e249e 100644 --- a/docker/unixconn/unixconn.py +++ b/docker/unixconn/unixconn.py @@ -73,12 +73,20 @@ class UnixAdapter(requests.adapters.HTTPAdapter): if pool: return pool - pool = UnixHTTPConnectionPool(url, - self.socket_path, - self.timeout) + pool = UnixHTTPConnectionPool( + url, self.socket_path, self.timeout + ) self.pools[url] = pool return pool + def request_url(self, request, proxies): + # The select_proxy utility in requests errors out when the provided URL + # doesn't have a hostname, like is the case when using a UNIX socket. + # Since proxies are an irrelevant notion in the case of UNIX sockets + # anyway, we simply return the path URL directly. + # See also: https://github.com/docker/docker-py/issues/811 + return request.path_url + def close(self): self.pools.clear() -- cgit v1.2.1