Merge pull request #36270 from dperny/fix-client-tls

Fix TLS from environment variables in client
This commit is contained in:
Vincent Demeester 2018-02-12 18:35:55 +01:00 committed by GitHub
commit bc17d0724a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -133,23 +133,15 @@ func FromEnv(c *Client) error {
},
CheckRedirect: CheckRedirect,
}
WithHTTPClient(httpClient)(c)
}
host := os.Getenv("DOCKER_HOST")
if host != "" {
var err error
// WithHost will create an API client if it doesn't exist
if err := WithHost(host)(c); err != nil {
return err
}
httpClient, err = defaultHTTPClient(host)
if err != nil {
return err
}
}
if httpClient != nil {
if err := WithHTTPClient(httpClient)(c); err != nil {
return err
}
}
version := os.Getenv("DOCKER_API_VERSION")
if version != "" {
@ -167,7 +159,8 @@ func WithVersion(version string) func(*Client) error {
}
}
// WithHost overrides the client host with the specified one
// WithHost overrides the client host with the specified one, creating a new
// http client if one doesn't exist
func WithHost(host string) func(*Client) error {
return func(c *Client) error {
hostURL, err := ParseHostURL(host)
@ -178,11 +171,17 @@ func WithHost(host string) func(*Client) error {
c.proto = hostURL.Scheme
c.addr = hostURL.Host
c.basePath = hostURL.Path
client, err := defaultHTTPClient(host)
if err != nil {
return err
if c.client == nil {
client, err := defaultHTTPClient(host)
if err != nil {
return err
}
return WithHTTPClient(client)(c)
}
return WithHTTPClient(client)(c)
if transport, ok := c.client.Transport.(*http.Transport); ok {
return sockets.ConfigureTransport(transport, c.proto, c.addr)
}
return fmt.Errorf("cannot apply host to http transport")
}
}