vendor go-connections to error out if unix socket path is too long
Signed-off-by: Tibor Vass <tibor@docker.com>
This commit is contained in:
parent
a08ffa0e93
commit
e2e7ab655f
4 changed files with 41 additions and 11 deletions
|
@ -17,7 +17,7 @@ github.com/vdemeester/shakers 24d7f1d6a71aa5d9cbe7390e4afb66b7eef9e1b3
|
||||||
golang.org/x/net 2beffdc2e92c8a3027590f898fe88f69af48a3f8 https://github.com/tonistiigi/net.git
|
golang.org/x/net 2beffdc2e92c8a3027590f898fe88f69af48a3f8 https://github.com/tonistiigi/net.git
|
||||||
golang.org/x/sys 8f0908ab3b2457e2e15403d3697c9ef5cb4b57a9
|
golang.org/x/sys 8f0908ab3b2457e2e15403d3697c9ef5cb4b57a9
|
||||||
github.com/docker/go-units 8a7beacffa3009a9ac66bad506b18ffdd110cf97
|
github.com/docker/go-units 8a7beacffa3009a9ac66bad506b18ffdd110cf97
|
||||||
github.com/docker/go-connections f512407a188ecb16f31a33dbc9c4e4814afc1b03
|
github.com/docker/go-connections 4ccf312bf1d35e5dbda654e57a9be4c3f3cd0366
|
||||||
|
|
||||||
github.com/RackSec/srslog 456df3a81436d29ba874f3590eeeee25d666f8a5
|
github.com/RackSec/srslog 456df3a81436d29ba874f3590eeeee25d666f8a5
|
||||||
github.com/imdario/mergo 0.2.1
|
github.com/imdario/mergo 0.2.1
|
||||||
|
|
16
vendor/github.com/docker/go-connections/sockets/sockets.go
generated
vendored
16
vendor/github.com/docker/go-connections/sockets/sockets.go
generated
vendored
|
@ -2,6 +2,7 @@
|
||||||
package sockets
|
package sockets
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"net"
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
"time"
|
"time"
|
||||||
|
@ -10,6 +11,9 @@ import (
|
||||||
// Why 32? See https://github.com/docker/docker/pull/8035.
|
// Why 32? See https://github.com/docker/docker/pull/8035.
|
||||||
const defaultTimeout = 32 * time.Second
|
const defaultTimeout = 32 * time.Second
|
||||||
|
|
||||||
|
// ErrProtocolNotAvailable is returned when a given transport protocol is not provided by the operating system.
|
||||||
|
var ErrProtocolNotAvailable = errors.New("protocol not available")
|
||||||
|
|
||||||
// ConfigureTransport configures the specified Transport according to the
|
// ConfigureTransport configures the specified Transport according to the
|
||||||
// specified proto and addr.
|
// specified proto and addr.
|
||||||
// If the proto is unix (using a unix socket to communicate) or npipe the
|
// If the proto is unix (using a unix socket to communicate) or npipe the
|
||||||
|
@ -17,17 +21,9 @@ const defaultTimeout = 32 * time.Second
|
||||||
func ConfigureTransport(tr *http.Transport, proto, addr string) error {
|
func ConfigureTransport(tr *http.Transport, proto, addr string) error {
|
||||||
switch proto {
|
switch proto {
|
||||||
case "unix":
|
case "unix":
|
||||||
// No need for compression in local communications.
|
return configureUnixTransport(tr, proto, addr)
|
||||||
tr.DisableCompression = true
|
|
||||||
tr.Dial = func(_, _ string) (net.Conn, error) {
|
|
||||||
return net.DialTimeout(proto, addr, defaultTimeout)
|
|
||||||
}
|
|
||||||
case "npipe":
|
case "npipe":
|
||||||
// No need for compression in local communications.
|
return configureNpipeTransport(tr, proto, addr)
|
||||||
tr.DisableCompression = true
|
|
||||||
tr.Dial = func(_, _ string) (net.Conn, error) {
|
|
||||||
return DialPipe(addr, defaultTimeout)
|
|
||||||
}
|
|
||||||
default:
|
default:
|
||||||
tr.Proxy = http.ProxyFromEnvironment
|
tr.Proxy = http.ProxyFromEnvironment
|
||||||
dialer, err := DialerFromEnvironment(&net.Dialer{
|
dialer, err := DialerFromEnvironment(&net.Dialer{
|
||||||
|
|
20
vendor/github.com/docker/go-connections/sockets/sockets_unix.go
generated
vendored
20
vendor/github.com/docker/go-connections/sockets/sockets_unix.go
generated
vendored
|
@ -3,11 +3,31 @@
|
||||||
package sockets
|
package sockets
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"net"
|
"net"
|
||||||
|
"net/http"
|
||||||
"syscall"
|
"syscall"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const maxUnixSocketPathSize = len(syscall.RawSockaddrUnix{}.Path)
|
||||||
|
|
||||||
|
func configureUnixTransport(tr *http.Transport, proto, addr string) error {
|
||||||
|
if len(addr) > maxUnixSocketPathSize {
|
||||||
|
return fmt.Errorf("Unix socket path %q is too long", addr)
|
||||||
|
}
|
||||||
|
// No need for compression in local communications.
|
||||||
|
tr.DisableCompression = true
|
||||||
|
tr.Dial = func(_, _ string) (net.Conn, error) {
|
||||||
|
return net.DialTimeout(proto, addr, defaultTimeout)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func configureNpipeTransport(tr *http.Transport, proto, addr string) error {
|
||||||
|
return ErrProtocolNotAvailable
|
||||||
|
}
|
||||||
|
|
||||||
// DialPipe connects to a Windows named pipe.
|
// DialPipe connects to a Windows named pipe.
|
||||||
// This is not supported on other OSes.
|
// This is not supported on other OSes.
|
||||||
func DialPipe(_ string, _ time.Duration) (net.Conn, error) {
|
func DialPipe(_ string, _ time.Duration) (net.Conn, error) {
|
||||||
|
|
14
vendor/github.com/docker/go-connections/sockets/sockets_windows.go
generated
vendored
14
vendor/github.com/docker/go-connections/sockets/sockets_windows.go
generated
vendored
|
@ -2,11 +2,25 @@ package sockets
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"net"
|
"net"
|
||||||
|
"net/http"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/Microsoft/go-winio"
|
"github.com/Microsoft/go-winio"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func configureUnixTransport(tr *http.Transport, proto, addr string) error {
|
||||||
|
return ErrProtocolNotAvailable
|
||||||
|
}
|
||||||
|
|
||||||
|
func configureNpipeTransport(tr *http.Transport, proto, addr string) error {
|
||||||
|
// No need for compression in local communications.
|
||||||
|
tr.DisableCompression = true
|
||||||
|
tr.Dial = func(_, _ string) (net.Conn, error) {
|
||||||
|
return DialPipe(addr, defaultTimeout)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// DialPipe connects to a Windows named pipe.
|
// DialPipe connects to a Windows named pipe.
|
||||||
func DialPipe(addr string, timeout time.Duration) (net.Conn, error) {
|
func DialPipe(addr string, timeout time.Duration) (net.Conn, error) {
|
||||||
return winio.DialPipe(addr, &timeout)
|
return winio.DialPipe(addr, &timeout)
|
||||||
|
|
Loading…
Reference in a new issue