From c94a933578c359c7b0c60bd3dacb606e3b1ed309 Mon Sep 17 00:00:00 2001 From: Todd Date: Tue, 2 Jan 2024 11:15:45 -0800 Subject: [PATCH] Manually build the socket url (#4205) --- internal/clientcache/cmd/daemon/addtoken.go | 7 ++----- internal/clientcache/cmd/daemon/command_wrapper.go | 6 +----- internal/clientcache/cmd/daemon/status.go | 7 ++----- internal/clientcache/cmd/daemon/stop_windows.go | 6 +----- internal/clientcache/cmd/search/search.go | 7 ++----- internal/clientcache/internal/daemon/listener.go | 12 ++++++++---- .../clientcache/internal/daemon/listener_test.go | 2 +- 7 files changed, 17 insertions(+), 30 deletions(-) diff --git a/internal/clientcache/cmd/daemon/addtoken.go b/internal/clientcache/cmd/daemon/addtoken.go index bac981cb4..811eb6663 100644 --- a/internal/clientcache/cmd/daemon/addtoken.go +++ b/internal/clientcache/cmd/daemon/addtoken.go @@ -138,11 +138,8 @@ func (c *AddTokenCommand) Add(ctx context.Context, apiClient *api.Client, keyrin } func addToken(ctx context.Context, daemonPath string, p *daemon.UpsertTokenRequest, opt ...client.Option) (*api.Response, *api.Error, error) { - addr, err := daemon.SocketAddress(daemonPath) - if err != nil { - return nil, nil, fmt.Errorf("Error when retrieving the socket address: %w", err) - } - _, err = os.Stat(addr.Path) + addr := daemon.SocketAddress(daemonPath) + _, err := os.Stat(addr.Path) if addr.Scheme == "unix" && err != nil { return nil, nil, fmt.Errorf("Error when detecting if the domain socket is present: %w.", err) } diff --git a/internal/clientcache/cmd/daemon/command_wrapper.go b/internal/clientcache/cmd/daemon/command_wrapper.go index 69dce5109..7b83c29f7 100644 --- a/internal/clientcache/cmd/daemon/command_wrapper.go +++ b/internal/clientcache/cmd/daemon/command_wrapper.go @@ -15,7 +15,6 @@ import ( "github.com/hashicorp/boundary/internal/clientcache/internal/daemon" "github.com/hashicorp/boundary/internal/cmd/base" - "github.com/hashicorp/boundary/internal/errors" "github.com/mitchellh/cli" ) @@ -134,10 +133,7 @@ func waitForDaemon(ctx context.Context) error { } timer := time.NewTimer(0) - addr, err := daemon.SocketAddress(dotPath) - if err != nil { - return errors.Wrap(ctx, err, op) - } + addr := daemon.SocketAddress(dotPath) _, err = os.Stat(addr.Path) for os.IsNotExist(err) { select { diff --git a/internal/clientcache/cmd/daemon/status.go b/internal/clientcache/cmd/daemon/status.go index 349a68110..bab48fb4e 100644 --- a/internal/clientcache/cmd/daemon/status.go +++ b/internal/clientcache/cmd/daemon/status.go @@ -106,11 +106,8 @@ func (c *StatusCommand) Status(ctx context.Context) (*api.Response, *daemon.Stat func status(ctx context.Context, daemonPath string, opt ...client.Option) (*api.Response, *daemon.StatusResult, *api.Error, error) { const op = "daemon.status" - addr, err := daemon.SocketAddress(daemonPath) - if err != nil { - return nil, nil, nil, fmt.Errorf("Error getting socket address: %w", err) - } - _, err = os.Stat(addr.Path) + addr := daemon.SocketAddress(daemonPath) + _, err := os.Stat(addr.Path) if addr.Scheme == "unix" && err != nil { return nil, nil, nil, errDaemonNotRunning } diff --git a/internal/clientcache/cmd/daemon/stop_windows.go b/internal/clientcache/cmd/daemon/stop_windows.go index 0aef235b5..abc97476f 100644 --- a/internal/clientcache/cmd/daemon/stop_windows.go +++ b/internal/clientcache/cmd/daemon/stop_windows.go @@ -66,11 +66,7 @@ func (s *StopCommand) stop(ctx context.Context) error { } func stopThroughHandler(ctx context.Context, dotPath string) (*api.Error, error) { - addr, err := daemon.SocketAddress(dotPath) - if err != nil { - return nil, fmt.Errorf("Error when retrieving the socket address: %w", err) - } - + addr := daemon.SocketAddress(dotPath) c, err := client.New(ctx, addr) if err != nil { return nil, err diff --git a/internal/clientcache/cmd/search/search.go b/internal/clientcache/cmd/search/search.go index 781120fca..a115af770 100644 --- a/internal/clientcache/cmd/search/search.go +++ b/internal/clientcache/cmd/search/search.go @@ -173,11 +173,8 @@ func (c *SearchCommand) Search(ctx context.Context) (*api.Response, *daemon.Sear } func search(ctx context.Context, daemonPath string, fb filterBy, opt ...client.Option) (*api.Response, *daemon.SearchResult, *api.Error, error) { - addr, err := daemon.SocketAddress(daemonPath) - if err != nil { - return nil, nil, nil, fmt.Errorf("Error getting socket address: %w", err) - } - _, err = os.Stat(addr.Path) + addr := daemon.SocketAddress(daemonPath) + _, err := os.Stat(addr.Path) if addr.Scheme == "unix" && err != nil { return nil, nil, nil, errDaemonNotRunning } diff --git a/internal/clientcache/internal/daemon/listener.go b/internal/clientcache/internal/daemon/listener.go index 4b0c2a8e1..bb8a73665 100644 --- a/internal/clientcache/internal/daemon/listener.go +++ b/internal/clientcache/internal/daemon/listener.go @@ -5,7 +5,6 @@ package daemon import ( "context" - "fmt" "net" "net/url" "os" @@ -53,7 +52,12 @@ func listener(ctx context.Context, path string) (net.Listener, error) { return l, nil } -// SocketAddress returns the unix socket *url.URL with the scheme set to 'unix'. -func SocketAddress(path string) (*url.URL, error) { - return url.Parse(fmt.Sprintf("unix://%s", filepath.Join(path, sockAddr))) +// SocketAddress returns the unix socket *url.URL with the scheme set to 'unix' +// and the path set to the provided path. Verifying the path is valid is the +// responsibility of the caller. +func SocketAddress(path string) *url.URL { + return &url.URL{ + Scheme: "unix", + Path: filepath.Join(path, sockAddr), + } } diff --git a/internal/clientcache/internal/daemon/listener_test.go b/internal/clientcache/internal/daemon/listener_test.go index de8bec76d..e63b7cd48 100644 --- a/internal/clientcache/internal/daemon/listener_test.go +++ b/internal/clientcache/internal/daemon/listener_test.go @@ -45,7 +45,7 @@ func TestListenComms(t *testing.T) { client, err := api.NewClient(nil) require.NoError(t, err) - u, err := SocketAddress(path) + u := SocketAddress(path) require.NoError(t, err) require.NoError(t, client.SetAddr(u.String())) client.SetToken("")