github.com/aliyun/aliyun-oss-go-sdk@v3.0.2+incompatible/oss/transport_1_7.go (about) 1 //go:build go1.7 2 // +build go1.7 3 4 package oss 5 6 import ( 7 "crypto/tls" 8 "net" 9 "net/http" 10 "time" 11 ) 12 13 func newTransport(conn *Conn, config *Config) *http.Transport { 14 httpTimeOut := conn.config.HTTPTimeout 15 httpMaxConns := conn.config.HTTPMaxConns 16 // New Transport 17 transport := &http.Transport{ 18 Dial: func(netw, addr string) (net.Conn, error) { 19 d := net.Dialer{ 20 Timeout: httpTimeOut.ConnectTimeout, 21 KeepAlive: 30 * time.Second, 22 } 23 if config.LocalAddr != nil { 24 d.LocalAddr = config.LocalAddr 25 } 26 conn, err := d.Dial(netw, addr) 27 if err != nil { 28 return nil, err 29 } 30 return newTimeoutConn(conn, httpTimeOut.ReadWriteTimeout, httpTimeOut.LongTimeout), nil 31 }, 32 MaxIdleConns: httpMaxConns.MaxIdleConns, 33 MaxIdleConnsPerHost: httpMaxConns.MaxIdleConnsPerHost, 34 MaxConnsPerHost: httpMaxConns.MaxConnsPerHost, 35 IdleConnTimeout: httpTimeOut.IdleConnTimeout, 36 ResponseHeaderTimeout: httpTimeOut.HeaderTimeout, 37 } 38 39 if config.InsecureSkipVerify { 40 transport.TLSClientConfig = &tls.Config{ 41 InsecureSkipVerify: true, 42 } 43 } 44 return transport 45 }