Bläddra i källkod

tech: avoid using http.DefaultClient

bergquist 8 år sedan
förälder
incheckning
05952688c5
2 ändrade filer med 29 tillägg och 2 borttagningar
  1. 15 1
      pkg/components/imguploader/webdavuploader.go
  2. 14 1
      pkg/services/notifications/webhook.go

+ 15 - 1
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

+ 14 - 1
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
 	}