From 05952688c53e9c4d144830d842af9ba565ddbde2 Mon Sep 17 00:00:00 2001 From: bergquist Date: Fri, 24 Feb 2017 17:22:12 +0100 Subject: [PATCH] tech: avoid using http.DefaultClient --- pkg/components/imguploader/webdavuploader.go | 16 +++++++++++++++- pkg/services/notifications/webhook.go | 15 ++++++++++++++- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/pkg/components/imguploader/webdavuploader.go b/pkg/components/imguploader/webdavuploader.go index 541a44d4b4a..93b3f9d2efa 100644 --- a/pkg/components/imguploader/webdavuploader.go +++ b/pkg/components/imguploader/webdavuploader.go @@ -4,9 +4,11 @@ import ( "bytes" "fmt" "io/ioutil" + "net" "net/http" "net/url" "path" + "time" "github.com/grafana/grafana/pkg/util" ) @@ -17,6 +19,18 @@ type WebdavUploader struct { password string } +var netTransport = &http.Transport{ + Dial: (&net.Dialer{ + Timeout: 60 * time.Second, + }).Dial, + TLSHandshakeTimeout: 5 * time.Second, +} + +var netClient = &http.Client{ + Timeout: time.Second * 60, + Transport: netTransport, +} + func (u *WebdavUploader) Upload(pa string) (string, error) { url, _ := url.Parse(u.url) url.Path = path.Join(url.Path, util.GetRandomString(20)+".png") @@ -28,7 +42,7 @@ func (u *WebdavUploader) Upload(pa string) (string, error) { req.SetBasicAuth(u.username, u.password) } - res, err := http.DefaultClient.Do(req) + res, err := netClient.Do(req) if err != nil { return "", err diff --git a/pkg/services/notifications/webhook.go b/pkg/services/notifications/webhook.go index bab8519f566..25d015e2db4 100644 --- a/pkg/services/notifications/webhook.go +++ b/pkg/services/notifications/webhook.go @@ -5,7 +5,9 @@ import ( "context" "fmt" "io/ioutil" + "net" "net/http" + "time" "golang.org/x/net/context/ctxhttp" @@ -22,6 +24,17 @@ type Webhook struct { HttpHeader map[string]string } +var netTransport = &http.Transport{ + Dial: (&net.Dialer{ + Timeout: 30 * time.Second, + }).Dial, + TLSHandshakeTimeout: 5 * time.Second, +} +var netClient = &http.Client{ + Timeout: time.Second * 30, + Transport: netTransport, +} + var ( webhookQueue chan *Webhook webhookLog log.Logger @@ -68,7 +81,7 @@ func sendWebRequestSync(ctx context.Context, webhook *Webhook) error { request.Header.Set(k, v) } - resp, err := ctxhttp.Do(ctx, http.DefaultClient, request) + resp, err := ctxhttp.Do(ctx, netClient, request) if err != nil { return err }