12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- // Package sockets provides helper functions to create and configure Unix or TCP sockets.
- package sockets
- import (
- "net"
- "net/http"
- "time"
- )
- // Why 32? See https://github.com/docker/docker/pull/8035.
- const defaultTimeout = 32 * time.Second
- // ConfigureTransport configures the specified Transport according to the
- // specified proto and addr.
- // If the proto is unix (using a unix socket to communicate) or npipe the
- // compression is disabled.
- func ConfigureTransport(tr *http.Transport, proto, addr string) error {
- switch proto {
- case "unix":
- // No need for compression in local communications.
- tr.DisableCompression = true
- tr.Dial = func(_, _ string) (net.Conn, error) {
- return net.DialTimeout(proto, addr, defaultTimeout)
- }
- case "npipe":
- // No need for compression in local communications.
- tr.DisableCompression = true
- tr.Dial = func(_, _ string) (net.Conn, error) {
- return DialPipe(addr, defaultTimeout)
- }
- default:
- tr.Proxy = http.ProxyFromEnvironment
- dialer, err := DialerFromEnvironment(&net.Dialer{
- Timeout: defaultTimeout,
- })
- if err != nil {
- return err
- }
- tr.Dial = dialer.Dial
- }
- return nil
- }
|