From e772e7bf2f2329ece09bd7af0c586b9728b2fd62 Mon Sep 17 00:00:00 2001 From: David Fifield Date: Thu, 16 Apr 2020 21:57:50 -0600 Subject: [PATCH] Add a timeout to HTTP requests and follow redirects. --- dnstt-client/http.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/dnstt-client/http.go b/dnstt-client/http.go index d104570..624e955 100644 --- a/dnstt-client/http.go +++ b/dnstt-client/http.go @@ -8,18 +8,23 @@ import ( "log" "net" "net/http" + "time" "www.bamsoftware.com/git/dnstt.git/turbotunnel" ) type HTTPPacketConn struct { urlString string + client *http.Client *turbotunnel.QueuePacketConn } func NewHTTPPacketConn(urlString string, numSenders int) (*HTTPPacketConn, error) { c := &HTTPPacketConn{ - urlString: urlString, + urlString: urlString, + client: &http.Client{ + Timeout: 1 * time.Minute, + }, QueuePacketConn: turbotunnel.NewQueuePacketConn(dummyAddr{}, idleTimeout), } for i := 0; i < numSenders; i++ { @@ -43,7 +48,7 @@ func (c *HTTPPacketConn) send(p []byte) error { } req.Header.Set("Accept", "application/dns-message") req.Header.Set("Content-Type", "application/dns-message") - resp, err := http.DefaultTransport.RoundTrip(req) + resp, err := c.client.Do(req) if err != nil { return err }