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  }