Detect context.DeadlineExceeded

This commit is contained in:
Star Brilliant
2018-11-07 19:41:55 +08:00
parent c51be0e69c
commit 2d9c9eba50
2 changed files with 20 additions and 2 deletions

View File

@@ -92,6 +92,13 @@ func (c *Client) generateRequestGoogle(ctx context.Context, w dns.ResponseWriter
c.httpClientMux.RLock()
resp, err := c.httpClient.Do(req)
c.httpClientMux.RUnlock()
if err == context.DeadlineExceeded {
// Do not respond, silently fail to prevent caching of SERVFAIL
log.Println(err)
return &DNSRequest{
err: err,
}
}
if err != nil {
log.Println(err)
reply := jsonDNS.PrepareReply(r)

View File

@@ -108,8 +108,10 @@ func (c *Client) generateRequestIETF(ctx context.Context, w dns.ResponseWriter,
if len(requestURL) < 2048 {
req, err = http.NewRequest("GET", requestURL, nil)
if err != nil {
// Do not respond, silently fail to prevent caching of SERVFAIL
log.Println(err)
reply := jsonDNS.PrepareReply(r)
reply.Rcode = dns.RcodeServerFailure
w.WriteMsg(reply)
return &DNSRequest{
err: err,
}
@@ -117,8 +119,10 @@ func (c *Client) generateRequestIETF(ctx context.Context, w dns.ResponseWriter,
} else {
req, err = http.NewRequest("POST", upstream, bytes.NewReader(requestBinary))
if err != nil {
// Do not respond, silently fail to prevent caching of SERVFAIL
log.Println(err)
reply := jsonDNS.PrepareReply(r)
reply.Rcode = dns.RcodeServerFailure
w.WriteMsg(reply)
return &DNSRequest{
err: err,
}
@@ -131,6 +135,13 @@ func (c *Client) generateRequestIETF(ctx context.Context, w dns.ResponseWriter,
c.httpClientMux.RLock()
resp, err := c.httpClient.Do(req)
c.httpClientMux.RUnlock()
if err == context.DeadlineExceeded {
// Do not respond, silently fail to prevent caching of SERVFAIL
log.Println(err)
return &DNSRequest{
err: err,
}
}
if err != nil {
log.Println(err)
reply := jsonDNS.PrepareReply(r)