@@ -10,7 +10,6 @@ import (
10
10
"io"
11
11
"io/ioutil"
12
12
"net"
13
- "net/http"
14
13
gohttp "net/http"
15
14
"os"
16
15
"path"
@@ -64,40 +63,35 @@ func NewLocalShell() *Shell {
64
63
}
65
64
66
65
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
+ }
84
89
}
85
90
}
86
91
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
- }
98
92
var sh Shell
99
93
sh .url = url
100
- sh .httpcli = * c
94
+ sh .httpcli = * client
101
95
// We don't support redirects.
102
96
sh .httpcli .CheckRedirect = func (_ * gohttp.Request , _ []* gohttp.Request ) error {
103
97
return fmt .Errorf ("unexpected redirect" )
0 commit comments