diff --git a/client/ping.go b/client/ping.go index 3f001ecf73..a95a249868 100644 --- a/client/ping.go +++ b/client/ping.go @@ -116,10 +116,15 @@ func (cli *Client) ping(ctx context.Context) (PingResult, error) { // response-body to get error details from. return newPingResult(resp), nil } + // close to allow reusing connection. + ensureReaderClosed(resp) // HEAD failed or returned a non-OK status; fallback to GET. - req.Method = http.MethodGet - resp, err = cli.doRequest(req) + req2, err := cli.buildRequest(ctx, http.MethodGet, path.Join(cli.basePath, "/_ping"), nil, nil) + if err != nil { + return PingResult{}, err + } + resp, err = cli.doRequest(req2) defer ensureReaderClosed(resp) if err != nil { // Failed to connect. diff --git a/vendor/github.com/moby/moby/client/ping.go b/vendor/github.com/moby/moby/client/ping.go index 3f001ecf73..a95a249868 100644 --- a/vendor/github.com/moby/moby/client/ping.go +++ b/vendor/github.com/moby/moby/client/ping.go @@ -116,10 +116,15 @@ func (cli *Client) ping(ctx context.Context) (PingResult, error) { // response-body to get error details from. return newPingResult(resp), nil } + // close to allow reusing connection. + ensureReaderClosed(resp) // HEAD failed or returned a non-OK status; fallback to GET. - req.Method = http.MethodGet - resp, err = cli.doRequest(req) + req2, err := cli.buildRequest(ctx, http.MethodGet, path.Join(cli.basePath, "/_ping"), nil, nil) + if err != nil { + return PingResult{}, err + } + resp, err = cli.doRequest(req2) defer ensureReaderClosed(resp) if err != nil { // Failed to connect.