From a318ab842a3dfa7988ada3e81893c92340308bd6 Mon Sep 17 00:00:00 2001 From: Sean Rodman Date: Wed, 21 Sep 2016 16:04:44 -0500 Subject: [PATCH] Updated the client/request.go sendClientRequest method to return a PermissionDenied error if the connection failed due to permissions. Signed-off-by: Sean Rodman Updated the check for the permission error to use os.IsPermission instead of checking the error string. Also, changed the PermissionDenied method to just a new error. Fixed a typo in client/request.go Fixed Error name as specified by Pull request builder output. Worked on making changes to the permissiondenied error. Fixed typo Signed-off-by: Sean Rodman Updated error message as requested. Fixed the error as requested Signed-off-by: Sean Rodman --- request.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/request.go b/request.go index f5c239bf25..0749ae3254 100644 --- a/request.go +++ b/request.go @@ -9,6 +9,7 @@ import ( "net" "net/http" "net/url" + "os" "strings" "github.com/docker/docker/api/types" @@ -129,6 +130,14 @@ func (cli *Client) sendClientRequest(ctx context.Context, method, path string, q return serverResp, err } + if nErr, ok := err.(*url.Error); ok { + if nErr, ok := nErr.Err.(*net.OpError); ok { + if os.IsPermission(nErr.Err) { + return serverResp, errors.Wrapf(err, "Got permission denied while trying to connect to the Docker daemon socket at %v", cli.host) + } + } + } + if err, ok := err.(net.Error); ok { if err.Timeout() { return serverResp, ErrorConnectionFailed(cli.host)