Improve DNS error handling

This commit is contained in:
Star Brilliant
2017-11-30 17:09:55 +08:00
parent 72211674fa
commit c42303e93e
2 changed files with 8 additions and 2 deletions

View File

@@ -198,7 +198,10 @@ func (c *Client) handlerFunc(w dns.ResponseWriter, r *dns.Msg, isTCP bool) {
log.Printf("HTTP error: %s\n", resp.Status)
reply.Rcode = dns.RcodeServerFailure
w.WriteMsg(reply)
return
contentType := resp.Header.Get("Content-Type")
if contentType != "application/json" && !strings.HasPrefix(contentType, "application/json;") {
return
}
}
body, err := ioutil.ReadAll(resp.Body)
@@ -218,6 +221,10 @@ func (c *Client) handlerFunc(w dns.ResponseWriter, r *dns.Msg, isTCP bool) {
return
}
if respJson.Status != dns.RcodeSuccess && respJson.Comment != "" {
log.Printf("DNS error: %s\n", respJson.Comment)
}
fullReply := jsonDNS.Unmarshal(reply, &respJson, udpSize, ednsClientNetmask)
buf, err := fullReply.Pack()
if err != nil {

View File

@@ -52,7 +52,6 @@ func Unmarshal(msg *dns.Msg, resp *Response, udpSize uint16, ednsClientNetmask u
reply := msg.Copy()
reply.Truncated = resp.TC
reply.RecursionDesired = resp.RD
reply.RecursionAvailable = resp.RA
reply.AuthenticatedData = resp.AD
reply.CheckingDisabled = resp.CD