Skip to content
This repository was archived by the owner on Feb 7, 2024. It is now read-only.

Commit 89dc426

Browse files
committed
fix(shell): Move UDS check into NewShellWithClient
1 parent f57c374 commit 89dc426

File tree

1 file changed

+24
-30
lines changed

1 file changed

+24
-30
lines changed

shell.go

Lines changed: 24 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import (
1010
"io"
1111
"io/ioutil"
1212
"net"
13-
"net/http"
1413
gohttp "net/http"
1514
"os"
1615
"path"
@@ -64,40 +63,35 @@ func NewLocalShell() *Shell {
6463
}
6564

6665
func NewShell(url string) *Shell {
67-
var client *http.Client
68-
69-
tpt := &http.Transport{
70-
Proxy: http.ProxyFromEnvironment,
71-
DisableKeepAlives: true,
72-
}
73-
74-
maddr, err := ma.NewMultiaddr(url)
75-
if err != nil {
76-
client = &http.Client{Transport: tpt}
77-
return NewShellWithClient(url, client)
78-
}
79-
80-
if value, err := maddr.ValueForProtocol(ma.P_UNIX); err == nil {
81-
url = "unix"
82-
tpt.DialContext = func(_ context.Context, _, _ string) (net.Conn, error) {
83-
return net.Dial("unix", value)
66+
c := &gohttp.Client{
67+
Transport: &gohttp.Transport{
68+
Proxy: gohttp.ProxyFromEnvironment,
69+
DisableKeepAlives: true,
70+
},
71+
}
72+
73+
return NewShellWithClient(url, c)
74+
}
75+
76+
func NewShellWithClient(url string, client *gohttp.Client) *Shell {
77+
if maddr, err := ma.NewMultiaddr(url); err == nil {
78+
if network, host, err := manet.DialArgs(maddr); err == nil {
79+
if network == "unix" {
80+
url = network
81+
if tpt, ok := client.Transport.(*gohttp.Transport); ok && tpt != nil && tpt.DialContext == nil {
82+
tpt.DialContext = func(_ context.Context, _, _ string) (net.Conn, error) {
83+
return net.Dial("unix", host)
84+
}
85+
}
86+
} else {
87+
url = host
88+
}
8489
}
8590
}
8691

87-
client = &http.Client{Transport: tpt}
88-
return NewShellWithClient(url, client)
89-
}
90-
91-
func NewShellWithClient(url string, c *gohttp.Client) *Shell {
92-
if a, err := ma.NewMultiaddr(url); err == nil {
93-
_, host, err := manet.DialArgs(a)
94-
if err == nil {
95-
url = host
96-
}
97-
}
9892
var sh Shell
9993
sh.url = url
100-
sh.httpcli = *c
94+
sh.httpcli = *client
10195
// We don't support redirects.
10296
sh.httpcli.CheckRedirect = func(_ *gohttp.Request, _ []*gohttp.Request) error {
10397
return fmt.Errorf("unexpected redirect")

0 commit comments

Comments
 (0)