github.com/aliyun/aliyun-oss-go-sdk@v3.0.2+incompatible/oss/transport_1_6.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  		MaxIdleConnsPerHost:   httpMaxConns.MaxIdleConnsPerHost,
    33  		ResponseHeaderTimeout: httpTimeOut.HeaderTimeout,
    34  	}
    35  
    36  	if config.InsecureSkipVerify {
    37  		transport.TLSClientConfig = &tls.Config{
    38  			InsecureSkipVerify: true,
    39  		}
    40  	}
    41  	return transport
    42  }