// Copyright 2013 The Go Authors. All rights reserved. // // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file or at // https://developers.google.com/open-source/licenses/bsd. // This file implements an http.Client with request timeouts set by command // line flags. package main import ( "flag" "net" "net/http" "time" "github.com/golang/gddo/httputil" ) var ( dialTimeout = flag.Duration("dial_timeout", 5*time.Second, "Timeout for dialing an HTTP connection.") requestTimeout = flag.Duration("request_timeout", 20*time.Second, "Time out for roundtripping an HTTP request.") ) func newHTTPClient() *http.Client { return &http.Client{ Transport: httputil.NewAuthTransport( &http.Transport{ Proxy: http.ProxyFromEnvironment, Dial: (&net.Dialer{ Timeout: *dialTimeout, KeepAlive: *requestTimeout / 2, }).Dial, ResponseHeaderTimeout: *requestTimeout / 2, TLSHandshakeTimeout: *requestTimeout / 2, }, ), Timeout: *requestTimeout, } }