|
@@ -273,16 +273,7 @@ func daemonHost() string {
|
|
|
return daemonUrlStr
|
|
|
}
|
|
|
|
|
|
-func sockRequest(method, endpoint string, data interface{}) ([]byte, error) {
|
|
|
- jsonData := bytes.NewBuffer(nil)
|
|
|
- if err := json.NewEncoder(jsonData).Encode(data); err != nil {
|
|
|
- return nil, err
|
|
|
- }
|
|
|
-
|
|
|
- return sockRequestRaw(method, endpoint, jsonData, "application/json")
|
|
|
-}
|
|
|
-
|
|
|
-func sockRequestRaw(method, endpoint string, data io.Reader, ct string) ([]byte, error) {
|
|
|
+func sockConn(timeout time.Duration) (net.Conn, error) {
|
|
|
daemon := daemonHost()
|
|
|
daemonUrl, err := url.Parse(daemon)
|
|
|
if err != nil {
|
|
@@ -292,14 +283,27 @@ func sockRequestRaw(method, endpoint string, data io.Reader, ct string) ([]byte,
|
|
|
var c net.Conn
|
|
|
switch daemonUrl.Scheme {
|
|
|
case "unix":
|
|
|
- c, err = net.DialTimeout(daemonUrl.Scheme, daemonUrl.Path, time.Duration(10*time.Second))
|
|
|
+ return net.DialTimeout(daemonUrl.Scheme, daemonUrl.Path, timeout)
|
|
|
case "tcp":
|
|
|
- c, err = net.DialTimeout(daemonUrl.Scheme, daemonUrl.Host, time.Duration(10*time.Second))
|
|
|
+ return net.DialTimeout(daemonUrl.Scheme, daemonUrl.Host, timeout)
|
|
|
default:
|
|
|
- err = fmt.Errorf("unknown scheme %v", daemonUrl.Scheme)
|
|
|
+ return c, fmt.Errorf("unknown scheme %v (%s)", daemonUrl.Scheme, daemon)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func sockRequest(method, endpoint string, data interface{}) ([]byte, error) {
|
|
|
+ jsonData := bytes.NewBuffer(nil)
|
|
|
+ if err := json.NewEncoder(jsonData).Encode(data); err != nil {
|
|
|
+ return nil, err
|
|
|
}
|
|
|
+
|
|
|
+ return sockRequestRaw(method, endpoint, jsonData, "application/json")
|
|
|
+}
|
|
|
+
|
|
|
+func sockRequestRaw(method, endpoint string, data io.Reader, ct string) ([]byte, error) {
|
|
|
+ c, err := sockConn(time.Duration(10 * time.Second))
|
|
|
if err != nil {
|
|
|
- return nil, fmt.Errorf("could not dial docker daemon at %s: %v", daemon, err)
|
|
|
+ return nil, fmt.Errorf("could not dial docker daemon: %v", err)
|
|
|
}
|
|
|
|
|
|
client := httputil.NewClientConn(c, nil)
|